What I'd actually like to see is a system where you get to rate each card in terms of how much you enjoy playing with it, and then the average of your and your opponent's ratings determines how likely each card is to show up. Obviously that would take more work to set up.
This is how I think the ban list should work, but without a rating, just a Yes/No. You "ban" some cards, and your opponent "bans" some cards. If both of you have a certain card "banned", you won't play with it. It's not a real ban, but if you and your opponent mutually agree that you would like nothing more than to never see Rebuild, it won't show up, and you'll both have more fun.
But if someone wants to play with a rotation of all the cards, including the most hated ones, they would still get to do that, even at high rankings where maybe a lot of players have Rebuild or Possession or whatever "banned".
The problems with a ban system where one player banning the cards means they absolutely won't show up ever, in auto-matched games, are:
1) Some players may want to play with a selection of all the cards, and don't really have this as a choice if banning cards is popular
2) You could, potentially, game the overall rating system slightly by banning your personal lowest win % cards
Maybe the effects of both of these are very minor. But requiring both players to have "banned" the card to prevent it from showing up would solve these problems. On the flip side, the banning might not do much at all in this case, if hardly anyone uses the feature...
As a compromise, what might work is what Jimmmmm suggested, but only with ratings of 100% and 0% (could still just be implemented as a 5 card ban list). If one player "bans" the card, the chance of it appearing is halved relative to the normal probability of it appearing. If both players ban it, it will never show up. Might be a reasonable compromise, since still any card *could* show up (vs. players who may prefer to see that card), and you would still see your least favorite cards less often.