i might not be understanding how you’re implementing the 2 controllers, but it seems that if all 16 solenoid wires are going to the same location, then 1 controller + an extender would work better. This would give you 24 stations. But based on how you described, since you have to power 2 controllers, then the commons are independent for each set of 8 zones.
the virtual part of your question is straight forward. let’s call them controller A and B. you can add virtual stations to controller A that connect via IP to controller B. just add another 8 stations in “station handling” in options in controller A. you will now see 16 stations. so for stations 9-16, configure each one (in advanced configuration of the station) as a remote station type connecting to one of the station in controller B. I would assume you would configure stations 9-16 in controller A to connect to stations 1-8 in controller B.
hope that helps.