Without a dynamic routing protocol between your ISP and you (like BGP), you are probably stuck with masquerading your LAN IPs.
Let's assume you have three point to point public IPs to your ISPs and your LAN is 192.168.0.0/24.
WAN1 (10.10.10.0/30 IP)<---->DSL1
WAN2 (10.10.9.0/30 IP)<---->DSL2
WAN3 (10.10.8.0/30 IP)<---->Fiber
LAN <---192.168.0.0/24---> Hosts
you would then have three masquerade rules:
chain=srcnat action=masquerade src-address=192.168.0.0/24 out-interface=WAN1
chain=srcnat action=masquerade src-address=192.168.0.0/24 out-interface=WAN2
chain=srcnat action=masquerade src-address=192.168.0.0/24 out-interface=WAN3
Then you would have your default routes contingent on a connection being up. There are many ways to do this, but the easiest is check-gateway ping. The lowest distance will be preferred. Even if you do PCC, you will want floating backup routes.
dst-address=0.0.0.0/0 gateway=10.10.10.1 check-gateway=ping distance=5 scope=30 target-scope=1
dst-address=0.0.0.0/0 gateway=10.10.9.1 check-gateway=ping distance=5 scope=30 target-scope=1
dst-address=0.0.0.0/0 gateway=10.10.8.1 check-gateway=ping distance=7 scope=30 target-scope=1
This alone would allow you to use any of the three connections with the same private host IP. Don't forget to use DNS that will work on any of the three WAN connections!
This is an insanely good explanation of PCC hashing: