My guess – and that’s all it is – is that the disk is thrashing hard during startup, to the point where the .NET Framework itself isn’t starting in the 30 seconds that Windows allocates for services to start.
A kludgy workaround may be to set the service to start manually, then write a very small stub service in unmanaged code (e.g. C++, Delphi) to start the service.
Another approach may be to start the service remotely from another machine. The sc
command should do the job nicely.