foreach (Timeline Curr in osnmp.Line) - а вот тут не может увеличиться количество проходов?
В правильном направлении подтолкнули, скорее всего не тут, а в этом месте:
while (osnmp.Line.Count > half_width)
{
osnmp.Line.RemoveAt(0);
}
Данные заталкиваются в буфер, который shrink'ится в момент перерисовки графика, что при первом отображении формы наверное занимает время и процессор, сейчас попробую поменять.