I'm not sure if this helps with the discussion or not, but here goes. I haven't paid much attention to what happens when using httpclient within the xmlrpc framework, but around the days of httpclient v2.0, I used it extensively in a standalone fashion. I did look at version 3.0 as well, but haven't looked at anything since. But I assume what applied then will still apply now.
Anyway, I can confirm that the httpclient framework itself supports keep-alives. I used WireShark (which was named Ethereal at the time) and paid pretty close attention to how it behaved. If I remember right, it has a couple small idiosyncracies, like not being able to close it's side of a connection at the instant that the remote side closes it, but they had workarounds for this type of thing that prevented errors. If I remember right, it would close it's side of the connection immediately before firing off the next transaction. This particular behavior may be corrected now. I ended up using httpclient it for my project and it performed well. I used it under pretty load, about 100k requests an hour and didn't run into any real issues. I do remember that in order to enable keep-alives, the configuration was slightly different from the most basic configuration, but it was still very simple. I had hoped to have a little more time to mess around with this within the framework of ws-xmlrpc and report results and give an example, but I just haven't been able to make the time. -Mike