HttpClient is not really designed for this case. you might be able to get to work with your own factory and careful setting of connection lifetimes. you also don't want a dictionary of pools. you will need the httpclient disposed, and short keepalives to actually close the connection (disposing a httpclient does not immediately close the connection due to keep-alive).
I'd probably use TCPClient instead. You will have much better control of the connection. You would also need your own http format handlers.
@moondaddy
Please check if the content in the following posts will help you:
Setting a per-request proxy (or rotating proxies) with .NET Flurl/HttpClient
Dynamically change proxy in HttpClient without hard cpu usage
Hey, I'm researching for the solution as well, I have similar use case as you do. Did you find a solution?