Por padrão, no Linux, se uma interface tiver vários endereços que estejam em sub-redes diferentes, o tráfego destinado às respectivas sub-redes terá o IP de origem adequado. Isto é, se eth0 tiver dois endereços 192.168.1.1/24 e 10.1.1.1/8, então o tráfego para qualquer coisa na sub-rede 10.0.0.0 terá a origem 10.1.1.1 e o tráfego para qualquer coisa na sub-rede 192.168.1.0 terá origem 192.168.1.1. Você também pode atribuir endereços de origem explicitamente neste caso usando a opção "src 1.2.3.4" para "ip route".
No seu caso, porém, todos os seus endereços estão na mesma sub-rede, então o "principal" (como revelado por "ip addr lista dev eth0") é usado como o IP de origem para o tráfego que sai naquela interface. Acho que é possível controlar os IPs de origem neste caso usando apenas "ip route", mas achei mais fácil usar o iptables para reescrever os endereços de origem para o tráfego de interesse.
Se você deseja forçar um endereço de origem específico a ser usado para destinos específicos, é possível fazer isso com uma regra SNAT:
iptables -t nat -I POSTROUTING -o eth0 -d dest-IP-or-net/mask -s primary-IP-of-eth0 -j SNAT --to-source desired-source-IP
Então, se o seu endereço IP "primário" é 192.168.100.1, mas você quer que o tráfego para 1.2.3.4 tenha uma fonte 192.168.100.2, faça o seguinte:
iptables -t nat -I POSTROUTING -o eth0 -d 1.2.3.4/0 -s 192.168.100.1 -j SNAT --to-source 192.168.100.2
Note que o "-s 192.168.100.1" é importante: impede que os endereços de origem do tráfego encaminhado sejam reescritos por esta regra.
Se você pretende implementar configurações complexas de rede no Linux, leia a documentação sobre Roteamento e Controle de Tráfego Avançado do Linux, link