Umm, where exactly does the idea that UDP is not routable come from? I have a strong feeling that's not true. If it wasn't it would be useless as an internet protocol. Admittedly, I have heard of certain ISPs having firewalls that block UDP packets but that seems to be more of a paranoid security thing. (And I'm pretty sure they don't block all UDP packets as some necessary protocols like DNS uses UDP).
And just to be annoying correct
, it not a "router" that a problem. It's NAT (Network Address Translation). Although pretty much every home router has NAT built in so I guess that puts us back at "routers" being the problem. Although real Internet routers don't do this nonsense.
Now, for those of you who might be wondering how a home router works
, it basically just creates a mapping between port numbers and internal IPs. The main reason, of course, is to hook up more than one computer using only one IP address, which kinda goes agains the whole idea of the Internet. The reason for doing so is that ISPs charge extra for more than one IP address, and IPv4 is supposedly running out of IP addresses. (Hence the extremely slow and gradual move to IPv6). Now, the way NAT helps with the address space crunch is that is uses the 16 bits for the port as a sort of extension to the 32 bit IP address. Since a computer is not likely to come anywhere close to using all 65536 ports, they basically get spread out over all the computers in the network (for outbound traffic anyways). When a packet passes through the router to the Internet, the router reads the source IP and port number, creates a new port number to replace the old one, replaces the source IP with your external IP, and updates it's table so that packets comming back using the new port number get mapped back to the old port number and the origianl source IP. This of course allows multiple computers to, say, browse the same webpage without getting packets confused. Now all this is not such a problem for most applications with outbound traffic like web browsers, but for accepting incomming connections like running a server or many peer to peer file transfers (depending on the direction of trasfer) there won't be a port/IP mapping in the router table. This of course leads to static mappings like specifying which ports get mapped to which computer (Port Forwarding) or just sending all data with an unknown destination to one particular computer (DMZ). Now, this still doesn't solve all problems since many programs, instead of using the source IP on the packet to send data back, will put the return IP address inside a packet and then, at the other end, use the IP stored in the packet to send traffic back. (This is most likely the problem with OP2). Now since NAT only translates the IP in the header of the IP packet, the internal IP address gets out, which is of course completely useless once it has passed beyond the NAT router. And for those who might be thinking it, there is no (remotely reasonable) way for the router to change the IP address stored in a packet. (How would it even know that data represents an IP address?)
This of course is all very neat but it's also a bit of an ugly hack that breaks standards, so you can expect to have problems with it.
Now, in theory, if the above problem is what's wrong with OP2, it could possibly be fixed by patching the IP address stored in the packet. Mind you, this might not even be the problem, and even if it is, not having the source or knowing how the network code was written, this is not a trivial task.
In the meantime while waiting for op2sock, you could try out various IP tunneling software or setting up a VPN (Virtual Private Network). I know WinXP has VPN software built in but I've never used it so I'm not exactly sure how to set it up.