Structured data in body or HTTP header is plenty for that, no need for a HTTP status.
For example, if we were talking about a human-readable /crates/* page, returning 410 Gone with a HTML page explaining the situation to a human, that page could have a JSON-LD snippet explaining the same to a computer.