Protocol-based solution

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