Does this mechanism address your concern: Improving the UX of rent with a sleeping+waking mechanism? A contract that misses a rent payment doesn’t get shut down; anyone can still use it. It’s just that when you use it, you have to pay a little extra and provide a little extra data to remind everybody what was in it.
I think it’s helpful to come at this from the opposite direction. Imagine Ethereum had started out with fully stateless validation. Every transaction has to prove the current state of every contract it touches (with Merkle proofs from previous state headers).
This would be very efficient for validators—no need to track almost any state except the block headers! And IMO it would still fulfill the promise of unstoppable applications. But it would be pretty inefficient for contracts that are accessed very frequently, and leads to complicated race conditions when the proof that comes with a transaction is from an outdated Merkle root.
So we could ameliorate those problems by requiring that validators cache the state of each contract for some amount of time after such a proof is provided. And for convenience, if a contract wants to avoid being dropped from the cache, it can burn some ETH to bump its TTL. If you don’t pay rent, your contract gets dropped from the cache, but it’s still part of the Ethereum state, and can still be accessed by anyone just by providing the necessary proofs.