Не знаю, что имеется в виду под уникальностью хэша, но лично я привязываю уникальность к самой картинке, делая md5 от содержимого файла. сразу решается куча проблем - и с дублированием контента, и с дублированием имён, и с равномерным распределением по иерархии каталогов.
В этом случае БД для поддержания уникальности действительно не нужна, но вот для привязки картинок к сущностям писать всё-таки придётся.
Я только не понял, при чем здесь кэширование