[Svn] Try to ensure we *always* invoke TryEndOperation

Rewrite the code so the very first thing we do is invoke TryStartOperation
and that TryEndOperation is the very first managed code to be invoked
inside the finally handler. This may fix the random failures on wrench
which could be caused by an exception being thrown and preventing
TryEndOperation from being invoked in some situations.