I can only talk for the wvlan_cs driver, but here are a few more details.
One of the big culprit in the wvlan_cs driver is those stupid module parameters (that may be set in config.opts). They are global :-(
If you look closely, the reset function always use the module parameters to reconfigure the card. As those parameters are global, if you have 2 cards you are sure that at least one of them will get screwed up.
Using Wireless Extensions do help, because they are per-card. But at the next reset, you loose.
The way to solve this mess is to have card configuration stored *per card*, not globally. This mean duplicate all modules parameters in the net_local structure and initialise it from module parameters in wvlan_attach. Then you replace all mention of module parameters in the code with the local version in net_local.
My previous inspection in the wvlan_cs code lead me to beleive that it's the only issue with multiple card (no other thing is global) and that it should work with this fixed (but I've been wrong before). And as it is not terrible difficult to fix (just a bit tedious), I expect that somebody will write a patch (hint, hint...).
P.S. David : I have trouble with the "wvlan_config" function, could you confirm that it handles dual cards properly ?