Availability groups NIC best practices
can I have 2 heartbeat networks between the nodes for redundancy
The whole setup will be virtualized.

I'm assuming you're going to bind these directly to the hardware NICs, otherwise it's kind of a moot point. If the host already has the NICs teamed, etc., then you really shouldn't need multiple interfaces in your guest (except for management or performance reasons, but not for health check reasons).
Cluster health checks go over any interface you allow cluster communication on (the public/private nomenclature died with Windows Server 2003). NetFT will take care of which interfaces are what and the metrics for each, adding additional interfaces wouldn't really be ideal. Instead use teaming or other technologies to make sure the interfaces stay up and available. Setting the client network for client and cluster communication will also do what you're asking without the need for extra interfaces.
Edit:
Unless you need to segregate traffic, such as the AG traffic for specific reasons such as NICs of higher speeds, network appliance between (compression/encryption), auditing needs, network protections, different virtual switches, etc., then there isn't really a need. If you meet one of these items, then it would make sense to have multiple NICs. Having a single NIC may require you to make changes to the host configs to have larger receive or send buffers.