There are no ISPs offering true static IPs on DSL. Instead, they basically build a tunnel to the on-site DSL router using IPsec, L2TP or PPPTP and then assign a static IP to the tunnel end-point.
The problem with this is that the overhead when using a lot of small packets (i.e. VoIP) is massive. E.g. If using IPsec, the overhead is 52 bytes. By contrast, an RTP packet with G.729 voice payload is 60 bytes. Assuming this running on ADSL with ATM cell overheads, etc, you're up from 42.2kb/s per call at L2 to 63.6kb/s or 50% extra overhead, or 2/3rds as many calls on the ADSL.
Perhaps a better solution would be to set up a ViBE server at the PBX side and ViBE CPE at the phone sides. Use dynamic DNS on the ADSL router at the PBX side and port forward the ViBE port to the ViBE server. The ViBE CPE can connect to the dynamic hostname of the server. Then, build ViBE tunnels with static IP addresses. Essentially, the VoIP will all work on static internal IPs and only the ViBE will deal with the dynamic dns.
Alternatively, if you don't want to go the ViBE route, you could just as easily build your own IPsec/PPPTP/L2TP tunnel mesh using Mikrotik RB750 or similar CPE connected to the ADSL modem and dynamic DNS. But you will have overheads. The advantage with this though, is it is compatible with Windows VPN end-points so if you have someone on a laptop with a softphone travelling, they can always VPN in. ViBE cannot do that but some Billion routers should be able to and it may be possible to do this with just Billions (no Mikrotiks) although I confess that while I've got the Billions working as VPN clients, I've never got them working as VPN servers.