Forbid unsized structs which are non-instantiable

Closes #16977 

r?
Do we actually have precedent for using distinct error codes for the same error in slightly different circumstances (i.e. here it's enum vs struct)? Unless we have clear precedent, I'd rather use a single error code, and if the description for the error ever gets fleshed out, it can clarify that this error applies to both structs and enums.