Better queueing of requests

Keep track of busy/free connections instead of just
spreading out requests on them.
Overengineered, better just prune every second
Prefer to keep it in one place

Yes, stuff could be queued longer (which might already happen
since queue is not a priority queue and start timestamp is created
by client). This is more practical though and should work perfectly
fine.
Test that a new worker replaces failed one
Raised timeouts
Removed unused define
Merge branch 'bj-better-queue'