It is impossible to know with any level of certainty how long a miner (or pool) has had a transaction in their mempool. Therefore, it is impossible to enforce a rule that requires them to have a transaction in their mempool for a specified amount of time.
Obviously, miners as well as other full nodes
must relay all standard transactions before including them into the block. Do you think that small transaction can propagate over the network 5 seconds slower than full block does? Not a problem - miners can adjust this delay as much as needed.
If my node receives new block "A" which builds on the current best chain but includes more than 5% of transactions that have been in my mempool less than 15 seconds, and then half a second later receives block "B" which builds on block "A" which follows your rules, what should it do?
Reject invalid block "A", and therefore reject valid block "B". But if afterwards it also receives valid block "C" which builds on block "B", the chain becomes valid. But this situation is possible only in case of 51% attack because honest miners will do their work on block preceding "A".
Have you figured out a reliable way to know what most nodes have in their mempool?
I suggest to define which transactions should be considered as standard and tighten the protocol rules to make nodes required to relay all these transactions.