Ok for anyone that is interested I seem to have discovered the issue. As the application was being developed while it was on the live environment some of the DLL's were compiled in debug mode. This meant that debug code was running when an error was hit on a client machine. More specifically the debug.asserts were being hit, with no dialogue being displayed on the client or server.
This meant that the server was waiting for user interaction, then timing out unrecoverably, even tot he point of requiring a server restart to get the whole thing up and running again.
I will be monitoring the system to ensure that this resolved all of the issues. and report back if anything else comes to light.