Truly random would be kind of bad. One thing you might consider is adding something to log the arguments that are going to the method before the call. Something as simple as a pair of lists would do. The point would be to try to find a pattern in the random.

Aside from that, you might look at WriteTimeout. This would be the "Give Up" option, though, but it would give you another test, potentially: If you added a write timeout, then if the timeout occurred, you could re-write the same thing. If it is ALWAYS blocking for certain arguments (which the failure of the second line suggests is NOT the case), then you might be able to identify the arguments that cause the blockage. If it really is random, then a second try would cause the exact same arguments to go through, in which case you have to look elsewhere.