Для перевода в html вам всё-равно придётся добавлять все элементы в один контейнер, чтобы брать его innerHTML. То есть вы будете делать ту же самую вставку, разве что в памяти, плюс вставка уже самого текста в dom, из которого потом браузер по новой будет создавать объектное представление элементов. Слишком много мусора получается.
Как вариант решения, можно саму вставку проводить нативными средствами.
jsfiddle.net/bpd7b1dx тут наглядно видна разница в скорости.
Насчёт documentFragment'а сказать ничего не могу, читал лишь, что в современных браузерах он особой пользы не несёт, но в таком же тесте на 1000 элементов был прирост на ~20% в сравнении с обычной нативной вставкой.