We are using IIS SMTP to send out Email for a web application. If I stand up another server what would be the best way to load balance these internally so they both get used and if one goes down the other would keep going? From my understanding simply creating another Windows DNS record would not solve the issue due to caching. We are using SonicWall firewalls which can do external load balancing, I'm not sure if they could be used to do the same internally or if something else could be done, maybe NLB?
Are we speaking outgoing mail only here? (Incoming mail comes with an altogether much more complicated set of issues to solve.)
A TCP ("Layer 4") load balancer would solve your problem nicely. Perhaps, as @HBruijn mentioned, this may be possible using your existing SonicWalls. Otherwise my personally preferred tool is HAProxy (which does both Layer 7 and Layer 4 LB).
Windows' own NLB feature is, de facto, a Layer 4 LB too, so that's a possibility if you want to solve the problem with what you already have.
(Note, though, that if you whitelist senders based on their IP address rather than using authentication, that whitelist must exist and be managed on the LB if you use a separate one, unless the SMTP server respects the Proxy protocol. Otherwise the SMTP server will only see the currently active LB node as the originator, which kind of defeats the purpose of a whitelist.)