How to make a large library with bookshelves in Blender?
The solution here I think would be particle systems.

Model a few different book shapes, apply a few different book cover textures and you should have enough variation to make it seem believable.

You can then use some sort of emitter object running along the length of your bookshelves with a particle system to quickly distribute the books 

Manually modeling thousands of books would be cumbersome and unpractical, but modelling a few variations, like say 10, with a few different textures , like say other 10 and you already have 100 possible different combinations of books.

You could also look into randomizing the textures procedurally, which would add even more perceived variation with little additional effort. If you are using Cycles the Random output socket of the Object Info node may help.

There are also a few book generation addons, both commercial (here and here) and free that could help if you want to automate the process.