Your problem is routing.
The machine has only got one default gateway. That means the IP address to send packets to if they are destined for the outside world and not the local network. The default gateway is also assigned to a specific ethernet device for the packets to be sent from.
Code:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
default 10.0.0.1 0.0.0.0 UG 1 0 0 eth0
In the example above, you see that anything destined for an address in 10.0.0.x will be addressed and sent directly to that IP because that is the "localnet". No gateway is required. Anything addressed to a loopback IP will be send using the "lo" interface. If a packet is destined for any other IP address, then it will be sent to the default gateway (in this case 10.0.0.1) so that the gateway can forward it on out of your network and onto the Internet. This default gateway is bound to the "eth0" interface. This means that eth0 will be used to send all packets out to the Internet and therefore will have the source IP as whatever IP is assigned to eth0. Even if you add an adapter and add a new entry to the routing table accordingly, there will still only be one default gateway bound to one adapter.
This means that while you can listen on any IP you want for incoming connections, outgoing ones will always use the default gateway.
If you want to get around this, then you are going to need to use iproute2 and iptables to create custom rules for routing outbound packets. This will require a lot of background reading. A couple of basic starting points:
http://www.linuxjournal.com/article/7291
http://blog.khax.net/2009/11/28/mult...-and-iproute2/