You could consider "inside source NAT"-ing this particular incoming traffic into two seperate source NAT address or (better) address pools of private addresses, each implemented by firewall cluster 1, resp. 2. So not only would this traffic be destination NATted when coming in (making the server's private address reachable via a public address), but also source NATted.
Then, from the core switch, route source address pool1 to firewall cluster 1 and source address pool 2 to firewall cluster 2 (possibly with static routes, but eventually, that's up to your internal routing setup).
While technically feasible, there are several important caveats that come with this proposal:
- the servers on the inside do not get to see the original source address in the IP packets. Be sure to ask the server guys what they think of that.
- "source NATing the entire Internet" might not be a good idea. Depending on the (size of) client audience these servers have on the internet, your firewall cluster's NAT tables might explode.
- Be sure to keep IP pool size and NAT translation timeouts timers well tuned. (a single inside source IP can only be used for ~64k simultaneous translations, in this context).
- Be sure to deeply understand the given application's needs and expectations.
[1]
This might not be a great solution (for that, consider running a proper reverse proxy system in a DMZ), but it might work within certain boundaries, and it might work without further infrastructure bits. The "downside" is that you really have to investigate and understand how the application running on the servers actually works.
[1] In extenso: Are these short/long-lived sessions? Is it ok not to see the clients public IP source address? Does the application need to reverse-connect to the client (hope not...)? Is it ok for the client to have completely different TCP session parameters (source IP, source port), when "coming back" after a given amount of time, or does (and if yes, for how long?) the server side application depend on these to re-recognize a given client?