The transaction fee are relatively small to the reward the miners get for solving a block, so the miners just don't bother about the transactions. It is all caused by greed.
Not even close. A miner can choose to base the block they mine on certain transactions from a certain node, some nodes (maybe even the miner's) will purposely reject transactions. It's not logical, it's the choice of the miner.
I accept that a miner can determine what is in the block.
But if the miner chooses their transactions and the block is not full, then any remaining space gets filled in with existing waiting transactions, even in descending fee order would be acceptable.
Granted the miners would need to be enticed, or forced, to run that code but, I would think this does not violate too many BTC ground rules and might actually be better in the long run.
Now this is just an idea and I admit my limited knowledge of the bitcoin network is just enough to be dangerous.
I hope and I am not be too naive and I look forward to some reality.