I don't have as many pictures as you do, only about 800+, as part of my travel photo album.
I don't see any hesitation, but then I'm not importing anything in the formal sense of "import."
What I do is in my image control, there is a property called PICTURE that can be the filename of the file I want to see. (I think it is PICTURE, check your object browser for image controls to find the thing that points to the picture.) I also set the properties appropriately to not tile the picture, to allow it to zoom, but to force it to maintain proportion. Also, I don't allow it to imbed the picture in the DB. I think that's a property, too.
What I store in the db is some descriptive stuff and the fully qualified file spec (device, path, name, type).
In my form's OnLoad event, I pop the file spec into the appropriate property. I never see much hesitation even on an old 400 MHz box, and on my newer box, it screams. But there is never an import dialog or box or anything like that. Never. 'cause I'm not importing.
Now, you MIGHT have a problem with loading the file specs for 4,000 files, but my question is, how do you identify the files now? 'cause you should be able to do a one-time query to populate a text field with your file spec (using the same selection rules) and that would be the end of the problem. And if you already have the file specs in a table, you're already where you need to be!