A strawman proposal for fixing this:
Instead of a flat $/yr charge for domain names, charge based on demand. If a user comes along to the registrar and wants to buy an already used domain name, they can file a bid with the registrar. The registrar records and authorizes the charge for the bid, perhaps even taking the money into escrow. At the same time, the current owner is contacted. The current owner can now choose:
- Accept the offer, sell the domain name.
- Accept an immediate increase in the annual registration fee for that domain name of 5% of the offer price.
The 5% is just a random number. Tweaks might include a some cap at $500, or having the percentage decrease as the offer increases so that the registration fee for google.com or whatever isn't astronomical. Perhaps reduce the percentage the longer the current owner has owned the domain as changes in identity are undesirable. It also seems like you might want to have registration fee hike exceptions in some cases, such as trademarks. Lots of options available.
Where should the extra registration money go? The registrars don't deserve most of this. I'd probably put it towards public projects to build better planet-wide network infrastructure (fiber in the ground) or something.