bind is quite bendy
Once upon a time (before I had the authority to change things) I had the unfortunate task of looking after M$ DNS where multiple networks had been configured as a flat domain as opposed to hierarchical.
Believe me when I say Bind is what I would call a 'clean' implementation in comparison to that disgusting mess, M$ DNS didn't restrict (much) and the people who managed the domain zone didn't have a clue.
don't want to define clients/sever hostnames
I fully appreciate that you don't want 'hardware' hard-mapped, the issue is having the same 'host' in three different domains. There is no way I am aware of to make dhcp to update the two zones to which the host does not belong, something has gotta give. You will either have to alias the IP addresses on the physical hosts, or alias the names in Bind (effectively my approach above).
If the hostname is not fixed in relation to a service (say HTTP) then how do you know the hostname to resolve to get that service (if its not always going to be '
www.company.com' how does the user determine) ?
Gotta get mailservers
Good luck

, thats another one of those jobs that will never ever be completed, something will always need a tweak.
and zoneminder
Plenty of help for that on the net, Google is your
Big Brother friend.
it isn't a major issue
Until somebody who is paying me asks me to do it

. Thrashing these things through not only stops the brain from atrophying.....it also keeps the pockets full.