You can't do it in the general case.
Most TLDs need to allow domain transfers because projects do genuinely change ownership sometimes. If you allow transfers, you allow reselling by definition (because you can't physically determine whether cash changes hands).
This isn't like tickets, where "return to pool and let an interested party buy it" is a viable strategy. Tickets are fungible, domains are non-fungible.
If the focus of this is truly on one-per-person personal domains then you don't need to allow transfers and reselling. (Although you'll probably get a grey market of people just repointing DNS to someone else anyway, because if there's money to be had someone will take it)
> Most TLDs need to allow domain transfers because projects do genuinely change ownership sometimes.
That's fine. It's not the transferring that you punish, it's the offering for sale. Good luck squatting when publishing any solicitation to sell the domain is the thing that causes you to lose it. How many domains are you going to squat on and pay renewal fees for when you have no way to let the public know you're willing to sell them that won't cause you to lose them?
> This isn't like tickets, where "return to pool and let an interested party buy it" is a viable strategy. Tickets are fungible, domains are non-fungible.
What does fungibility have to do with whether you can return something to the pool? The lack of fungibility makes it work even better, because if you want a specific domain and you find someone squatting on it, you can report them advertising it for sale. When the registry verifies that the report is true then the person filing the original report can be given first crack at the domain when it goes back into the pool.