That seems like a very, very poor choice. I have the same concern with Matrix.
the question actually challenges all sorts of assumptions we make about how the internet works. in this regards it reminds me of IPFS.
And while ipfs has some very cool tech the main thing it has problems with are names. ipfs has no names, which sucks. there is a name system ipns but it does not help much.
ipfs does a publish/subscribe subsystem which I find one of the most compelling parts. it is however considered experamental and inefficient.
this did not stop me from writing a distributed video streaming system using it. which turns out to suck, no names, and, even on my local network I was getting ~ 2 minutes of lag, no one would put up with that for streaming.
https://nl1.outband.net/fossil/ipfs_stream/doc/tip/readme.md
By all means, enlighten us to the better one. It seems like they made a tradeoff here, and one that’s most in line with keeping everything distributed.
ENS (https://ens.domains/) solves this problem rather elegantly. A single source of truth that is decentralized so any app can use it without trusting anyone. It wasn't around when Mastadon was being built unfortunately but is useful for developers of new apps and protocols.
Only the top level namespaces require a purchase. Names for services (e.g. james.mastadon.eth) are free. A live example of this is Coinbase which gives users (name).cb.id for free. Once your service claims a namespace you have full control over it.
A major problem in distributed systems is names. one solution is to do what dns did, you can have nice names but you only get to pick them under the part of the hierarchy you control. another solution is to do what git or ipfs does. nobody gets useful names but at least you don't need any sort of central name database.
mastodon went the dns/email route, which makes sense people want nice names. but now your name is stuck on your domain. perhaps someone could have setup a central name server to avoid name collisions, but who would you trust to run it? what happens when it goes down? might as well just use dns.
Off tangent opinion on names in a federated system.
Unfortunately mastodon adopted the twitter style "@user" but because this only make sense in the context of a single domain mastodon mainly uses the awkward form "@user@domain" I think the email/xmpp form "user@domain" would have been better, but if they felt the @ prefix was critical to the experience of a twitter like micro blog than they probably should have adopted the form "@user.domain"