Thanks for the quick replies.
I re-ran the tests using Task.WhenAll and the results between MUX and pooling were very close (in terms of total processing time). As is visible in the graph, however, the MUX (as expected) used significantly less connections. Great stuff!
Thanks again.