Hi,
Well I suppose the fact this is happening for other sane frontends means there is a problem with that specific sane backend over a network (or the local instillation/setup). You may want to raise a bug with sane about this.
As a short term work around, you could disable the 'net' backend in your sane.dll config file so that scanner (which is causing the trouble) is not found.
Given both the above (a sane bug and a local workaround) I wouldn't be changing openDIAS, but, if you wanted to go ahead and made functional changes to openDIAS, can you branch from "development_0_9" in git.
I'd suggest the following:
The device is only opened on the getScannersList call get get the available resolution. You could defer that open and resolution gathering to a subsequent call made by AJAX if someone clicks on that scanner tab in the acquire page.
This way we keep the current user interface, but only trigger the problem if someone wants to use the broken backend.
btw: sane_init is done when the application starts. All sane work is done in the main application thread. can called to from the separate threads created by the application to handle client requests. This is done because sane is not thread safe. :(
Let me know what you think about the above, and if you make any changes... Good luck
Cheers.