Problem fixed! (sort of)
It appears that, in exclusive mode, some drivers respond to a WaveFormatExtensible better than a WaveFormat, the solution being to try both structures on IsFormatSupported(), and use whichever gives a positive result. Doing so confirmed the 24-bit response at all sample rates for two of the cards. The third card has a low level stream of 24 bit audio in 32 bits words, which is not supported by the NAudio constructor for WaveFormatExtensible. Adding a new constructor fixed that problem.
All that remains is to get the data in and out ;-)