Sorry for jumping into the discussion but why don't we use sane_get_option_descriptor() / sane_control_option() on a new predefined option, for example, "sane-version-features", which could be read by a frontend and if, no error occured, set to required SANE API level (aka. additional features available), specific bitmask etc. Doing that we could avoid any changes in already used API. And when such an option is set by a frontend, backends could start using additional SANE_Status.
The implementation of such a solutions is rather simple. Just my .2 cents. -- Ilia Sotnikov