Why is Linux choosing the wrong source ip address

Solution 1:

It sounds like you want to specify for traffic to be routed out a particular alias interface and with the source IP associated with that alias. Your route table doesn't currently reflect that requirement. Perhaps you can use this to fix it up:

ip route add <NET> dev <ALIAS_DEV> src <SRC_IP>