How can I add multiple NAT gateways to main route tables for HA
you should not use the main route table for this purpose. As you should know, a NAT Gateway is created in a specific Availability Zone and implemented with redundancy in that zone.
If you have resources in multiple Availability Zones and they share one NAT gateway, in the event that the NAT gateway’s Availability Zone is down, resources in the other Availability Zones lose internet access. To create an Availability Zone-independent architecture, create a NAT gateway in each Availability Zone and configure your routing to ensure that resources use the NAT gateway in the same Availability Zone.
So, I would create a Route Table for each availability zone used in your private subnets and then configure the belonging NAT Gateway to it.
You cannot have conflicting destinations with different targets. That is – you could not have 0.0.0.0/0 -> tgw-12345 and 0.0.0.0/0 -> tgw-6789 since routing in AWS does not have anything like Administrative Distance (AD) like we see in something like a Cisco appliance.