I have tested the scrolling. What I can suggest in this case would be to set ScrollMode="Deferred". That way the scrolling performance will be improved.
Then I see that you set the IsExpanded state when the RowLoaded event is raised:
sender, RowLoadedEventArgs e)
var row = e.Row
var person = (Person)row.DataContext;
(row.IsExpanded != person.IsExpanded)
The RadTreeListView supports UI Virtualization as explained in this help article
. Since the virtualization is turned on by default, it is not recommended to work with the visual elements (i.e. Rows) and their properties.
Generally we recommend controlling the expanded state through using the IsExpandedBinding property as demonstrated on the "IsExpanded binding" WPF Demo
Please try those two suggestions and let me know how they work for you.