Actually, its still about the same.
I added 5000 actors, and so long as you don't try to click the window or anything, it won't crash, but it took 24 seconds, and my computer is not slow by any means.
I do have an idea. We can not initialize new actor instances while the list is being populated, but maybe use it more like a just-in-time function. If the selection is changed, check if anything exists in the corresponding container, and if not create it. This could cause issues when the data is supposed to be saved, but so long as we handle it properly, it should work.
EDIT:
I implemented it, and it can now fill the list with 9,999 items in less than a second. Data_actors is extended with a None, which can simply work as a placeholder for Actor, which can be initialized only when it needs to be, but it will keep track of the size of the container. So far, this looks to be the best way for performance. It may require a few more checks throughout the code to make sure items exist before accessing them, though.