Кешируют обычно не спрайты, а геймобжекты целиком.
Делается контроллер кеша, который не используемые сейчас ГО выключает, но оставляет на сцене. Нужно создать новый объект - просите контроллер создать, а он смотрит - есть ли у него объект нужного типа или нет. Если есть - просто включает его. Если нет - создает стандартным Instantiate.
Чтобы не менять спрайт через код - можно сделать не 1 префаб, а по префабу на каждый тип элемента для вашей игры.