Fix partition starvation issue

If one partition is up to realtime, choosing that partition induces
a wait based on the consumer timeout. However, if other partitions
have messages waiting then we're waiting for no reason. This fixes
that, but is a bit hacky. A real fix will require some refactoring
of the partition code, which I don't have time for right now.