Вместо списка, который является более сложным объектом, попробуйте создать простой массив. Это может быть быстрее:
IEnumerable<T> newCollection = new [] { t}.Concat(e);
Теперь я скажу вам, что для добавления этого элемента в Linq необходимо создать новую коллекцию какого-либо типа. Это потому, что Linq предназначен для работы с перечислимыми, и потому что он не имеет побочных эффектов; независимо от того, что вы делаете в операторе Linq, исходные перечисления остаются такими же, какими они были до вашего запуска (если только вы не имеете дело с пользовательской коллекцией, у которой есть перечисленные побочные эффекты). В результате на каком-то уровне Linq должен рассматривать ваш отдельный элемент как коллекцию, содержащую этот один элемент, чтобы он мог перечислять эту коллекцию для получения любого результата, который вы пожелаете. Это верно независимо от того, скрываете ли вы реализацию за методом расширения, как в MoreLINQ, или нет.