Do you really need to check for collisions between all 2000 instances? Cause that's millions of checks every tick, and I don't think any optimizations will help in this extreme case..
I made some changes to your file, have a look:
https://www.dropbox.com/s/q0im3vciif8u2 ... .capx?dl=0
You should only use "Is Overlapping" with this method, don't use "On collision".
And, of course, the more objects are added, the less often overlapping checks are performed for each of them, so the accuracy of collision detection will decrease.
Also, interestingly, when instances are spread on the layout, the number of collision checks is lower, than when all instances are in one spot. I'm guessing the engine is skipping unnecessary checks for objects that are too far away from each other.