If you are really using 1000 objects, good idea might be to group. Let's say every 50 objects you add 1 to variable Group, and every tick or milliseconds you will calculate path for next group. At least this way you wont be calculating for all of the 1000 objects at the same time, and it will give those behind some time to recalculate the path.
It is going to be tricky. you'll need count amount of objects based of their distance first. if 1000 of them is close, you will have to group them starting from direction of the mouse click. I don't know precisely atm ( really tired ).
OK, Another Idea, which might be better, is to spawn several nodes/zones towards destination, before looking for path, and chain it, so they will look for first node first, then whe they arrive to first node they will look for second etc. This will significantly shorten path calculating.
EDIT@ So, had one more thought about it. And in theory that's how I would try and program it:
Have an invisible unit, super fast, that will be spawned from the nearest selected unit, and will go shortest path, dropping nodes on it's way, every number of pixels passed, and each node have variable for that node +1, so node one is 1, node 2 is 2 etc. Then check one by one for nearest unit ( or use loop to get a number of nearest units. You might ask on the forums how to do it, cause i don't know; maybe look in to this ), selected but not moving units, and trigger on their path towards first node. For each one getting in the area of that node, find new path towards next node. And when you change the final destination point, destroy the nodes and create new ones.
Should work!