I have never tried what you are proposing but the prospects of success seem a little on the slim side. Plus even if you did get it working once, you might later findout that it was a fluke that you can't reproduce.
Another potential solution is to build a watchdog function that aborts and restarts the datasocket process if it hangs without a timeout. I've had to do this for VI server and its not hard.
Or you could take the datasocket VIs, gut them and build inside them equivalent functionality using a different protocol--like a TCP connection, for example.
As long as your rebuilt code has the same functionality when viewed from a caller, the rest of your application won't know (or care) about the change.
Mike...