We recomend the bonding for best practices but you dont have too have the bonding for the VIPs and you can use the 4 MPIO-paths.
The 4 virtual IP-adresses are the combination of the Local and Remote Nodes IPs.
With your setup you can have 4 virtual IP-adresses or more if you wish to have more then one stream and gain path failover with MPIO.
But I don't get why you use 4 ip-adresses in 4 different subnets in your active-active example. XenServer 6.1 doesn't seem to support 2 IP-Adresses per interface by default.
Why dont use 4 adresses in 2 different subnets for example, e.g. 192.168.21.99 for target0 & bond0 192.168.21.100 for target1 & bond0, 192.168.31.99 for taget0 & bond1, 192.168.31.100 for target1 & bond1?
By not applying our recomendation with the 4 different subnets it will cause serious routing issues and in case of moving resources access to iscsi storage can be lost. Though you can do this but I wouldnt recomend it.