handle unusual case of multiple small writes to metadata blocks to listeners

If icy metadata intervals are very short, then it was possible that multiple
short writes are required. The check for limiting how much was left in the
block was not accounting for previously sent amounts therefore sending more
stream data (probably trigging a resync in the listener), however the icy
metadata was still in sync so didn't trigger a failure.

This misalignment was showing as an increased queue position which in the
case of a lagging listener and none refcounted blocks means that the buffer
referenced could disappear or be resused after it dropped off the queue.