Здравствуйте, Философ, Вы писали:
Ф> определить видим он или нет
Для этого нужно либо прибить высоту элемента гвоздями, либо- в случае если высота не прибита и отличается в зависимости от содержимого, тебя ждёт интересное путешествие по граблям и алгоритмам.
Ф>Поверь мне на слово, сделать кастомную релизацию IList над таблицей в БД,
Хз, я не считаю это чем-то полезным или умным.
Ф> тебе придётся придумать механизм инвалидации кэша.
Я придумывал механизм инвалидации кэша

Это не так сложно на самом деле, особенно в сравнении с виртуальным списком.