Forbid unsized structs which are non-instantiable

Closes #16977 

r?
Oh, so it's not a matter of the string being different, it's literally just two references to the same diagnostic in code causes that. That's curious. Do we really have no cases right now where we want to raise the same error in multiple places?