Reindjer
Основная мысль ответа: надо будет что-то написать самому.
А теперь подробнее: при помощи асинхронных запросов (ajax) можно получать с сервера только те части меню, которые действительно нужно отобразить. В коде это выглядит примерно так: пользователь "раскрывает" пункт меню - JS-ом кидается запрос на сервер - получаем ответ и динамически создаем нужные пункты подменю.