selenium может подставлять свои заголовки, своего user-agent. Возможно, сервер это видит и не отдает весь контент. Задайте принудительно User-Agent такого же, который получается, когда вы идете на сайт браузером
Можно инициализировать дин массив с размером 2 и счетчик Count.
При превышении увеличивать размер массива в 2 раза.
При 1.5М строк размер массива будет равен 2097152
2097152 * 8 (пусть даже Int64) = +-16 мегабайт
Иван, скорее всего, разбор одного файла займет памяти больше, чем этот массив. Можно сначала реализовать таким вариантом, а затем искать узкие места. Вы слишком заморачиваетесь не в том направлении)