Brucey has performed some serious low-level investigation into this and provided me with a fix (hack). Seems to work well. I'll let him explain it all if he wants since it is his masterpiece, but for now my problem is fixed.
That's not fair, Brucey! Keeping it to yourself like that... :-P So, go on - I'm eager to find out what the fix is as from my own investigations it looks as though this is actually a problem with fork()ing large processes. I managed to reproduce it in a short example, simply by allocating a large amount of memory (like 50MB) before calling OpenURL() and it crashed every time.
Spill the beans, you know you want to. ;-)