What are the naming rules for named instances on a cluster?
You are correct in noting that the virtual name needs to be distinct. I'm having a hard time understanding what you're describing so I'm going to try to lay it all out.

SINGLE INSTANCE FAILOVER CLUSTER

If you're truly looking for "Active/Passive" then you're going to need at least four servers - two nodes for each instance. Let's call the instance SQLPROD-EAST.

You could then have:

Node A: SQLPROD-EASTA
Node B: SQLPROD-EASTB

Virtual Name: SQLPROD-EAST


as your nodes.

The virtual name would be SQLPROD-EAST and you'd install the default instance of SQL Server would would take the name SQLPROD-EAST. You'd then replicate this topology with SQLPROD-WEST:

Node A: SQLPROD-WESTA
Node B: SQLPROD-WESTB

Virtual Name: SQLPROD-WEST


MULTI-INSTANCE FAILOVER CLUSTER

This is where your description got confusing because it seems like you began describing Active/Active. This might look like:

Node A: SQLPRODA
Node B: SQLPRODB

Virtual Name: SQLPROD


as your nodes.

The virtual name would be SQLPROD and you'd install two named instances of SQL Server SQLPROD\EAST and SQLPROD\WEST.