If the speed you're looking for is about "not boggling down the server", then I suggest that you split it up in parts. That is, start a search and do a couple of nodes, then schedule an another round and continue. The bots may move within this time. When it has reached the goal, then it's done.
However, if a brick is modified, it will then check if that is a node(I'm not sure how you're placing nodes, so do your thing here to move/replace it), and then do the A* again. I assume that in a heavy match with many AI's, this should reduce the lag on the server. You may also make so the bots wont move until a valid path has been found.
There is also this thing that you may split the graph up into smaller sections and connect them with their own graph. This may of course be a bit complicated, but it could make the A* to guess in beforehand what path is faster, and then do smaller A* searches each time they search.
That is, first do a fast A* on the overview graph. Then do A* on the section the bot is within right now.
Mix together both of the suggestions and you will have something solid enough.
I believe this technique was used in Rail Tycoon.
No-edit: Man, now you got me hyped to make this myself...
Edit: I made an image to maybe make it a bit easier. The orange circles is the sections and the yellow lines are connections between them. This might look like it's complicated to make, but actually, just bundle together a couple of neighbors that are closest to each other and mark their section connections.

This could also give room to optimizations between sections to have a predefined path while just going through sections.
Sectioning like this can be done within itself as well. Sectionception!