Вот как я справляюсь с такой ситуацией. Не пытайтесь переместить видимые линии по отдельности, просто перекрасьте всю коллекцию, но нарисуйте ее в растровое изображение , а затем перенесите ее в видимое окно.
Если перерисовать 1000 строк непосредственно в видимом окне, это может занять 10-100 мс, и вы, вероятно, увидите мигание. Но если вы рисуете в растровое изображение памяти, это, вероятно, займет примерно столько же времени, но не будет заметно мигать, потому что перенос блоков на экран происходит очень быстро.