another rule bitcoin consensus can have to mitigate the spam/empty blocking
have blocks rejected if they only contain under 1000tx
that would suddenly inspire pools to fill blocks with more transactions
The problem I see with that is that not only would you get rid of spam, you would also invalidate the mining of empty blocks whose hash is discovered a few milliseconds after the previous one. Although I suppose if the spam problem becomes serious, the miners could potentially come to an agreement. At the moment AFAIK there is only one that has never mined an empty block:
When I made my analysis on the subject, I found that all pools mined empty blocks except for Kano.is, kano publicly stated that his pool code won't send an empty block template to miners unless his mempool is empty which is more like 'never'