Protocol-based solution

I think this models the problem. It appears to behave like an M/M/c queue.

/cc @amirrajan @camdez @Zedzap @alexrobbins