Нигде не вызывается invalidate() у PrototypeHeightStrategy. Это иногда приводит к непредвиденному поведению и странному отображению ячеек при перезагрузке данных. Высоты начинают выдаваться не тем ячейкам.
Вероятно invalidate() должен вызываться в clear() у TableDirector.