I don't think that would work well with the existing TLDs, where domain names often have meaning other than as just a domain name, and there is often more than one person or organization that would want that specific name.
Maybe make a new TLD specifically for infinitely lasting names, say .permanent, and make all top level names under that be 128 bit numbers in some text format randomly generated when you register the domain such as hex or base64. E.g., f560618f355b0ddf560456d41d635e3d.permanent or 9WBhjzVbDd9WBFbUHWNePQ==.permanent.
With those names it doesn't matter that they get locked up forever with the initial registrant.
> As a compromise, perhaps you could charge a nominal fee for domain name ownership transfers.
When the name is generated also generate a public/private key pair and associate the public key with the name at the top level servers. Someone is considered to own the domain if they can prove that they have the corresponding private key.
The top level would allow someone who has the private key to ask for a new key pair to be generated to replace the current one.
Want to transfer ownership? Give the new owner the private key and they can use it to do a key change.
This should allow making the top level service entirely automated and cheap to run.