you can configure each DNS server to do Conditional forwarding for each domain to the correct server.
thats is , for example:
configure server A for company1, that it preforms conditional forwarding for domain.company2 and enter server B for company2 as the dns server.
that way when server A or any other client in company1 will try to resolve names in company2 it will get a correct resolution.
a guide with another example on how to configure it:
http://msmvps.com/blogs/ad/archive/2008/09/05/how-to-configure-conditional-forwarders-in-windows-server-2008.aspxnow the servers and client should be able to use FQDN names that is - printer1.company2.com from company1 .
to support short name resolution as you requested you will need to enter DNS Suffixes in each client computer and servers.. you could use GPO for this, but here is how to configure a single workstation for you to test , followed by a guide for Group Policy.
http://www.simpledns.com/kb.aspx?kbid=1232 - configure dns suffix
http://technet.microsoft.com/en-us/library/bb847901.aspx - configure dns suffix with group policy
that should solve your needs,
ilantz