We've answered this question many times before.

The problem is with the TCP/IP implementation. Virtually all implementations work by looking at the routing table and finding the best match for the destination address. There used to be an IP flag that would let the source determine the route used by the packet, but it occurred to virtually everyone that this is a security problem (it can be used to bypass NATs, for example) and has been almost universally disabled. Some anal ISPs drop packets that are source routed even if they aren't destined anywhere within their network. Anyway, that isn't going to help.

Fortunately, you're only interested in selecting what interface to use on your side. This is doable, but basically requires a new IP stack. The way almost all OSes work, even if you used interface A's address, it might still go out interface B's interface. (This can cause problems, too, with anal ISPs who think you're spoofing addresses.) So you need something that will specifically use one interface. This requires something that talks directly to the interfaces instead of letting the OS's IP stack do the job as normal. Since you want kind of a general-purpose thing that will work with multiple applications, this basically means you need a new IP stack, and that's not going to happen. (I don't think.) This is basically what happens on the Linux routers that will do what you want.

It's more likely that you can find a proxy server that will do what you want for web access only, but I still think the chances of finding one are slim.
_________________________
Bitt Faulk