Restructured the queue handling to isolate the blocking stream.Recv(), and found a seemingly random block point somewhere. After experimenting with the sizes of the long messages generation, it was determined that messages over 4kb are getting stuck in the gRPC packet handling code somewhere. Nothing that can be done about it, but just needed to fully isolate where the problem was so I could finally call the damn queue implementation done.
Some issues with the round robin job distribution counter... confusion about the difference between the *number* of workers versus the maximum index of the worker channel slice. Not sure if it should be written differently, trying to avoid adding a -1 in the loop as this is an unnecessary operation to do repeatedly on the worker count, so it's done when it's initialised.