Look into creating Master and Slave DNS machines. You can make each a master and slave for particular names/ip ranges. They can then propogate to the "other" machine (master/slave) and in theory you should be able to see both sets of ranges from both locations, I think
HQ Master ===PROPOGATE===> BRANCH SLAVE
BRANCH SLAVE === PROPOGATE ===> HQ MASTER
I'm only working in theory here so i might be completely wrong.