To display thousands of thumbnails efficiently, you can't use TilePane, because it is way too slow. You need to use a virtualized control like ListView, which displays very fast and supports multi-select, which is great. But it only displays in one column or one row rather than in a grid. What is needed is a GridView that wraps like TilePane, but is a virtualized control that is fast like ListView.
There is an open source GridView at https://controlsfx.bitbucket.io/org/controlsfx/control/GridView.html , but this is such a common need that it would be good for this to be part of the core JavaFX. Also, that open-source version doesn't support multi-select the way ListView does.
See a discussion on StackExchange for working code examples to demonstrate the slowness of TilePane, the speed of ListView, and a working GridView.