FWIW, I found a suitable workaround now to get my use case working with existing kernels: I can do the mode switch from userspace, then after the device reenumerates I can manually disable any interfaces I don't like by writing 0 to their 'authorized' node, and then I write the VID/PID to usb-storage/new_id. I still think it would be nice in general to be able to force a driver to bind a specific device (rather than a VID/PID match), but it's not a pressing need for me anymore.