Если PHP/MySQL то запускайте каждый сайт от отдельного пользователя через php-fpm. Ограничения можно настроить в пулах php-fpm. Дополнительно можете ограничить пользователя через Cgroup. Для пользователей MySQL тоже можно ограничить некоторые параметры.
ID поставляют, чтобы не заморачиваться с уникальностью. Поиск ресурса только по ID плюс любой SEF URL гарантировано наплодит дубли, если будут изменяться SEF URL.
Не надо ничего выдумывать с виртуалками. LEMP прекрасно изолируется и конфигурируется на уровне пользователя и php-fpm pool. Если требуются какие-то дополнительные ограничения, то есть Cgroup и Disk Quota.