Just implemented the texture caching. Unfortunately, my memory estimates were quite off as I was doing them based on the size of the compressed images... In reality, having all images in memory causes a resident set of around 280MB, virtual memory usage being around 2.8GB. Considering that we'll probably end up with three times as many images, this seems way too much.
So I suppose I'll have to look into per-scene preloading. The options I considered so far still apply, slightly altered:
2a. Have a mapping between image IDs and image paths, with a separate section for each scene
2b. Have a list of images to preload for each scene
2c. Preload all images in a specific directory at the start of each scene
2c seems pretty unattractive now... Yet I can't imagine that most games handle this by simply hard coding/mapping all image paths (2a/2b).