I tried to do something similar ("on demand scanning"), but it was quite complicated and I thought it wasn't worth delaying other features just for this one.
Besides, thousands of books on reader is already possible, you can put .noscan, copy books you need to IM and delete them afterwards, when you don't need them. And remember, that when loading cache you still have to check whether file is there or was deleted (standard code does it anyway). So it would still take a lot of time to load thousands of books (Russians have 80k+ lrf libs in the wilds, for English speakers there are about 16k books from guttenberg project and the likes)
Having file in cache.xml spares you creating a viewer instance, and reading books metadata. I think .noscan plus loading cache.xml book data wouldn't be too different from no .noscan and all books in cache.xml.