I never understood why a TLD is a big deal in any real sense. If ICANN wanted they could make the whole web address a single string. No need for a separate TLD. It's like the filename's extension.
But then the DNS root servers would have to know every single domain in existence. The current system works because the higher level servers only need to know who below them in the hirarchy is responsible for the next subdomain.
How would you resolve a single string?
Replace hierarchical partitioning with keyspace partitioning (eg hash buckets). A fundamental difference in architecture, but so was GP's idea.
Because the current system with hundreds of TLDs is a multi-billion dollar industry.
Not sure about the answer, but one thing that comes into my mind is about decentralization, in the sense of load balancing the DNS queries.