I think it would be possible to keep a central database containing only the information which username has already been registered within the Fediverse - a bit like domain registrars. When a new user joins, the operators of an instance could look up whether the desired username is already occupied on another instance. This would certainly mean losing some autonomy, since the instances would no longer have sovereignty over available usernames. But I think it would be beneficial overall if usernames were only assigned once within the Fediverse.
I don’t think this is realistic at all. It breaks the current philosophy of the fediverse where each instance can be both autonomous and federated. What would happen if for example an instance wanted to federate after they already had a couple accounts. Would they need to delete these users because the username exists? This is the reason that the second part (after the “@”) exists.
Also look at the email. Ofcourse it is possible to have the same name with users in other email services. It would be very weird not to be allowed to get the yourname@yourfavoriteservice.com because the yourname@anotherservice.com already exists.
What you are suggesting introduces and requires a central authority that would be responsible for that, but this again, breaks the philosophy of the fediverse itself.
large companies and influential people are in the commercial platforms because of the ads. There is literally no reason for them to move in a place without ads.