There are many ways you can do this. It depends on how many soft clients you have.
Here is my recommendation:
1- Have all the phones register to your opensips. Asterisk does not need to know about the registrations and can send/receive all calls only to/from opensips.
2- Use the load balancer or dispatcher module to equally balance the incoming load to both your asterisk servers. The load balancer would also know if one asterisk server is down and will direct all calls to the other or you can add more asterisk servers in the future. You could disable a server to go to drain mode or assign resources.
3- For outbound, you could use drouting module to define rules and have alternate routes.
4- You could also use the dial plan module for additional manipulation or rules.