simply let a series of rules govern which transactions get included into a mined block
The Bitcoin protocol has no way to enforce such rules. Miners have complete discretion as to which transactions they include in a block. Your first suggestion (higher fee gives higher priority) will happen naturally if miners are greedy, but there's no way to make them select blocks on any other basis, nor any clear way to incentivize them to include older or larger transactions.
If such rules were to be mandatory, at minimum there would have to be a hard fork to adopt them into the protocol, and even then it's not at all clear what the new protocol would look like. Suppose a miner omits a "high-priority" transaction in favor of one to which your rules give lower priority. If the rule is mandatory, then his block should therefore be invalid.
But remember that it has to be possible to validate the blockchain after the fact. If someone is downloading and verifying the blockchain months later, how will they have any way of knowing that this high-priority transaction was in the mempool at the time and therefore this block is not acceptable? This seems unworkable.
Bitcoin Core used to follow priority rules by default, with some block space reserved for transactions with high "bitcoin days destroyed" (older and larger), but this was strictly voluntary, and any miner could patch the code or use different software if they wanted to do something different. Their blocks would be accepted just the same either way. And in fact, as soon as transaction volume reached the point where it was more lucrative to include higher-fee transactions over those with higher BDD, miners began to do so in short order, and eventually Bitcoin Core gave up and removed its BDD rules in favor of a purely greedy algorithm.