While you wouldn't translate 'Hans' to 'John' simply because both are stereotypically generic names, they are actually equivalent names. Hans is short for Johannes which has the same root as the English name John, both derived from the Greek name Ιωαννης. It is not uncommon for first names to be translated, at least in the case of historical figures: people named 'Guillaume' or 'Wilhelm' are often rendered 'William', 'Henri' or 'Heinrich' as 'Henry', 'Jean' or 'Johannes' as 'John', etc. So names certainly can translate :)
While you wouldn't translate 'Hans' to 'John' simply because both are stereotypically generic names, they are actually equivalent names.
I agree that names can be translated, and I gave some examples. I stated poorly what I was trying to say. I should have said something like "In general, names are not usually translated. If they were..."
It is not quite the same structure.
haben is a transitive verb with a subject and an object (which is “affected” by the action).
sein (to be) is a copula, a linking verb, that links a subject to a predicate that says something about the subject. A bit like an equals sign: “Hans = my brother”. Such predicates are in the nominative case in German.
werden (to become) acts similarly.