Тут проблема в том, что браузер не дурак - он не будет в ресурсах держать изображения, которые не используются на странице, также как и начинать их грузить, пока они не требуются.
Когда вы переключаете текстуры, браузер неиспользуемые "забывает" - и когда вы в очередной раз такую "забытую" текстуру суете в background-url с помощью стилей, он ее тянет из интернетов заново (посмотрите консоль запросов).
Путь решения - подгружаете изображение с помощью new Image(), конвертируете в base64, полученный base64 используете в качестве значения для background-image.
Еще вариант без base64, который, возможно, сработает - сделать для каждой текстуры по элементу, один раз установить элементам background-image и менять текстуры анимируя opacity соотв. элементов.
Можно еще с Canvas поплясать.