У вас может быть многоуровневая иерархия, где каждый уровень гарантированно никогда не превысит максимум.
Например, если ваши идентификаторы пользователя определены с помощью регулярного выражения [A-Za-z0-9 _] +, у вас есть 64 возможных варианта выбора для любого данного символа (я добавляю пробел в счет пробелов в конце когда идентификаторы короче). Взяв два символа вместе, вы получите 64 * 64 = 4096 возможностей. Вы не можете использовать три символа, так как это приведет к превышению вашего лимита. Затем с помощью этой информации вы можете создать каталоги, разделив идентификаторы на группы по две буквы. Пример: идентификаторы пользователя "miguel" и "miguel12345" будут идти по адресу:
/images/mi/gu/el/<image>
/images/mi/gu/el/12/34/5/<image>
Обратите внимание, что последний компонент может быть длиной в один символ, если длина идентификатора нечетная. Это хорошо, так как пространство считается возможным символом, вы все равно будете в пределах максимального подкаталога.
Удачи!