All humanly recognizable identifiers; usernames, domains, etc; need to be set by the client. I.E. petnames.
An entity can make a proposal about who they are, our network of friends can tell us who they think the entity is, and we can verify for ourselves. Each layer adds a bit more certainty.
A web of trust approach is the only truly decentralized way to do it. If you demand that identifiers be globally unique, then you have a form of centralization. Even consensus models are centralized if required to be global.
Don't bake in any global info to your protocol. It should function the same whether your corner of the network is isolated from the whole or joined.