Ok, sorry, I should have realized that you would have tried the obvious.
I've run it a few ways and replicated everything you are describing. I think the problem is really an Excel issue not a VBA issue. You can blame Bill Gates if you want, but I think the issue has to do with how link-tables are built in Excel, which is essentially an array.
The good news is that I think there are solutions...
I tried deleting manually one of the rows that the VBA code is deleting. It took about 4 1/2 secs per deletion (My computer is a really slow Celeron, so have pity on me...) this is about the same as your 3 secs. As you noted, whether Calculation was set to manual or automatic had virtually no effect.
What's happening then is that Excel's links table for that WS is being reconstructed top to bottom every time a row is deleted. The cells are considered static in location, which makes tracking calculation dependencies fast for Excel recalculations (which are frequent).
Structural changes, like a row deletion, are relatively infrequent and take longer. Programmatically deleting hundreds of rows was not on Excel's mindset when built. And allowing VBA to do such a thing, well, makes it possible, but it doesn't mean that Excel is designed to do that well.
By the way, Links between Worksheets (WSs) are essentially a pointer/handle situation, so moving WSs around would not have as much effect. The result is that calculating a bunch of cells on the same WS should be faster than calculating the same exact set of formulas that are crossing WS boundaries. But deleting or moving a WS is less painful.
I think the key for you is that "dead data", that is, Cells with numbers & text in it, but no formulas, have no linking involved and therefore support row deletions pretty much instantly.
The rows in question, roughly 490 to 600+, are "essentially" dead data in how they are used, but they do have formulas in them pulling from values in the lower-numbered rows above. There appear to be no "direct" dependecies to these cells, but I'm guessing that the Indirect() and VLookup() functions that you have throughout the WB are accessing this area. Only you know this for sure.
What I would do, is have a macro:
(1) Copy the data to another WS, "TempWS". pasting only the values
(2) Delete all the rows as needed on this new "TempWS".
(3) "Access the adjusted data"
I put step 3 in quotes because I'm not sure what is best for you here. You may want to either:
(a) Delete all the old rows in question (in one large deletion, which is one link-table rebuild) from the "Planning" WS and then paste in the correctd values.
(b) Perhaps Range.ClearContents of this area and then pasting in the correcte values would work better. (Certainly involves no Range.Delete this way.)
(c) Or perhaps put the corrected data in the correct rows within the "Temp WS" (starting at row 490 I guess) and then have the macro do a text Find/Replace in the entire WB replacing all "Planning!" with "TempWS!". This will change all formulas that pull from the "Planning!" WS to now pull from the new, corrected data on the "TempWS".
I can't tell for sure what's easiest here becaue the WB is so complicated I think only you could judge what's best/easiest here.
I hope this helps,
Mike