I think letting root bat on was definitely fine. we were scoring quickly at the time, the runs were going to be easier to get then than in the third innings or on day 4/5. I wouldn't have contemplated declaring until anderson came in, and even then would probably have just let him have a swing. It simply wasn't a match we were ever going to get 20 wickets for under 500 runs so going for close to 600 first innings made a lot of sense.
We shouldn't have batted for so long but poor top order batting once again put us in an awkward spot. Balance kind of had to dig in and bat us into a dominant position, arguing about the exact declaration kind of masks the fact that the top order failed yet again. If the batsmen performed we wouldn't been in a position of giving balance a shot to get to 100.
But i think waiting for him to get his 100 is justifiable, anyway. (note that I think they didn't specifically wait for him to get a hundred, more decided to declare overnight and bash to close) England got 69 runs off the last 10 overs, so if we declared say 10 overs earlier (when jordan got out) the lead would have been 320, with 98 overs for Sri Lanka to get them. I'd say sri lanka would have a very good chance of doing that. 389 from 90 overs is very unlikely. Of course you want to do you utmost to win, but there has to be a balance with not losing.
The problem was not batting 45 minutes too long. it was batting too poorly in the first 2 hours.