IVI is developed to garantee a standard interface for standard instruments.
It is great in that respect only the implementation in C resulting in a black box when using it in LabVIEW sucks.
The clue is in "standard" . This is relatively easy for instruments like a dmm or an oscilloscope but is a problem for e.g. a spectrum analyzer because the analyzer from e.g. Agilent and "Rhode and Schwarz" have a so different look and feel that a good IVI interface is not yet developed.
The best is to implement as little as possible and try to abstract the function as much as possible.
So for a radio you can select frequency and maybe bandwidth and status and leave it to that.
In this case try to implement a layer of basic functions with a separate level of abstraction for you application.
The last layer will call the lower level functions and with another radio you can have the same higher level interface with a different lower level set of functions.
When using LV8.2.1 you even can use goop to have two classes with the same high level functions.
I hope that all drivers move in that direction now goop becomes a real part of LabVIEW.
greetings from the Netherlands