Splitting DNS names between internal and public DNS servers

Here’s my current situation:

We have both internal and public DNS servers. The internal DNS runs on Windows Server and is used by thousands of clients on our private network. The public DNS runs named and hosts the DNS records for our public-facing sites.

Most of our sites follow the pattern subdomain.main.com. Public sites are defined on the public DNS, and internal sites are defined on the internal DNS. On the public DNS, we use CNAME records to map multiple names to the same IP:

; suppose this is main.com zone file
top   IN A 193.159.80.1
abc   IN CNAME top.main.com.
; etc

On the internal DNS, we register internal sites as separate zones, each with a single A record (many names resolving to the same internal IP):

top2.main.com
A -> 10.50.100.1

The problem
Whenever we need to update the internal IP, we must manually update it across all internal zones—each has its own A record that needs to be changed.

We can’t create a main.com zone on the internal DNS because internal clients would then be unable to resolve the public DNS entries unless we duplicated all public records internally. But if we did that, internal clients would rely solely on the internal DNS version of main.com, which would require us to maintain every public entry manually.

We also can’t create a subdomain.main.com zone with CNAMEs because the resulting records would always be in the form alias.subdomain.main.com, rather than alias.main.com.

Question
Aside from restructuring our internal naming scheme to something like subdomain.subdomain.main.com or duplicating all public DNS entries internally, is there another strategy we can use on the internal DNS server to avoid having to update every A record individually?

Thanks