I think we should dynamically decide fairness on a per-circuit basis based on how many cells it's already tried to push through recently.
This means if you do a quick page fetch on port 80 it works fine, but if you pull down a dvd on port 80 you start getting less priority; yet a long-term IM conversation over port 80 is still pretty zippy.