У них был целый проект посвященный генерации этих id в промышленных масштабах. Сейчас проект закрыт, старый код можно смотреть в истории комитов.
https://github.com/twitter/snowflake
Если порассуждать как можно это реализовать на коленке - можно в качестве внешнего id использовать что то типа
$outer_id = $id . "-" . md5($salt.time());
Обрезать до приемлемой длины по вкусу.
id получится гарантированно уникальный, т.к содержит $id и при этом трудноподбираемый перебором.