The thing that Diaspora and Mastodon get wrong is their insistence on putting the instance in the username.
If I'm jim1234@mastodon.org because somebody else gets my preferred username, that's fine. I don't have to worry about the @somehost.somewhere site shutting down because the host got bored or lost their job or moved. So jim1234@somehost.somewhere is the last thing I want.
Whatsapp started with the idea of $1/year for an account. If I'm paying $1/year to mastodon.org so I don't have to worry about reinventing the people I follow, etc. that seems like a good deal.
Then instances can compete on features and/or price. If my friend Bob is running a server for his friends for free, maybe I use him. Or if instance A has spam-filtering while instance B accepts absolutely all federations and instance C translates everything into pirate-speak, well, I can pick from those.
If Bob's system is down a lot or he doesn't do spam-filtering or whatever, it'd be nice to have the option to pay $10/year or $25/year or whatever to be on another instance where it's a business relationship. Or maybe the instance does fund-raising twice a year because the site owner wants it less businesslike.
Running the central registry becomes a big responsibility but it also lends itself well to being replicated. And at some point 100,000 or 1 million users becomes $100,000 or $1,000,000 in actual revenue. Minus credit card processing, colo fees, etc. But still, there's a business there.