Apart from that, I think per-service identities are the best that can be hoped for. If I choose to engage with Facebook, I have to trust them to some extent anyway, so trusting them with my identity on Facebook is probably good enough. If I want to establish that some Twitter identity is the same as some Instagram identity, I can do so by directly referencing them from one another. I don't think we can do much better than that without involving the state.
Anyway my understanding is that Bluesky uses DIDs for exactly that reason, to punt the actual naming implementation and avoid silly internet fights like this.
And there’s already at least one blockchain purpose-built for naming - https://handshake.org/. Worth reading their design notes on how and why it works as it does.