Ensure a percentage of space in the blocks so that older transactions, regardless of the fee amount, can be processed.
It was like that in old versions: it was possible to send transactions for free, if some conditions were met. And yes, it can be introduced without any forks, just convince major mining pools, and it will happen.
Imagine that 10% of the block is allocated to process transactions that are over 48 hours old, regardless of the fee used.
Some people called that "coinage", because inputs and outputs are sometimes called "coins", and then there were rules, to check, how many confirmation a given input has. More than that: you can use the same code for calculating something called "priority" for each transaction, and include them into blocks, based on that.
But of course, in the past, people abused free transactions, and since then, we moved into space-based transactions, counted in "satoshis per byte", and later counted in "satoshis per virtual byte", when Segwit was introduced. But still, nothing stops any mining pool from making a room for cheap/free/old/whatever transactions.
When it comes to solutions, I can see something like that:
1. Sidechains, mentioned by pooya87. Ordinals are only about cloud storage, and pushing data, which means, you can just sign existing mainchain coins, and put a signed message into the sidechain, and then handle it there in a trustless way. Also, in this way, the real ownership can be enforced properly, and some bugs can be fixed, for example related to assigning numbers to Ordinals with zero satoshis. Note that because Ordinals are not about payments, no soft-fork is needed to enforce any amounts, all that is needed, is just signing messages, and making sure they are unique.
2. Transaction batching. Regular users need a way to compete with Ordinals. Which means, transactions should be batched, so that thousands of users, paying one satoshi per virtual byte, could join their efforts, and make one transaction, which will have a higher feerate, and will handle all of their payments. Because one user paying 0.01 BTC is the same as thousands of users, paying 1000 satoshis each, if transaction size is identical.