Way easier than that:
Just add a second Dial() after the first. If the first fails (either because it is offline, or even if he just doest pick up), asterisk will fail over to the second..
eg:
same => n,Dial(SIP/1111)
same => n,Dial(SIP/SomeProvider/12125551212)