kafka: check for partition availability before selecting one

When a partition is unavailable, sending to it will just lead to a lost
log. Therefore, after selecting the partition, check if it is
available. If not, select the next one until we tried them all.

A future iteration may use consistent hashing to avoid to double the
work done on a partition when the previous one is unavailable.