Stopping the SA through the control panel or net stop most certainly does not stop services based on a timeout. It clearly brings up an interface that says “To stop this, I must stop these other things”, then if you answer Yes, proceeds to do so. In fact the control panel does better than the net stop commands in some ways – it is aware of the nested dependencies. The reason you have to run three net stop commands is that net stop can only track one level of dependencies. So, if I have all the services running, I have a dependency tree similar to:
Net stop will figure out all the levels, but the first time you run it it will stop the IMS, Event Service, KMS, INS plus one level up – the IS. But then it quits. The second time you run “net stop msexchangesa” the MTA and Directory will get stopped. The third time, the SA gets stopped. There’s apparently a bug in the recursion that stops it too soon.