Thanks very much for the information; that's all really helpful.
We think we've managed to isolate this particular problem to an Apache setting, that was set based on the desired number of connections, and the TCP/IP queue length. It turns out that the equations given on the Apache website (and echoed here) may be a little on the low side for our setup.
I'll update this later with the exact details if it turns out to be the case (fingers crossed) - I don't want to post false solutions here until we've had a chance to absolutely check things ourselves.
The post regarding virtualisation is very interesting, and something that I have to agree with. I'm not convinced it should be used for busy transactional stuff at all. It's just too unpredictable. Development - yes. Perhaps functional testing - yes. But not live. Cost often wins though, and the ease of adding infrastructure is often seen as being a distinct advantage - even if it does all suffer from the same issues!