Практически все, что можно выжать, с текущей структурой без изменения подхода к считыванию директорий.
80% времени отводится на сторонние библиотеки (читай Xwt)
~20% времени еще отводится на DispatchPendingEvents, можно еще поиграться с тем, как часто запускать DispatchPendingEvents, но это кажется неблагодарным занятием (да, даже правило 80/20 иногда попадается в чистом виде).
Практически все, что можно выжать, с текущей структурой без изменения подхода к считыванию директорий.