Why does this cut elimination procedure terminate (contraction case)?
I extend what I wrote as a comment. As there is a great number of cases in the proof, I only give an idea of why this transformation terminates. The short answer is:

In the case promotion vs contraction, after the transformation, the number of contractions in the part of the proof containing cuts has decreased by one.

To go a bit more into details, I would say that you were mistaken because you thought that either the number of cuts or the size of the proof should decrease in order to ensure termination. However, termination can be proven by looking at other parameters of the proof. 

If you want to prove termination, you only have to show that each rule will be applied a finite number of time. You can prove that the transformation rule promotion vs contraction will be applied at most m times, where m is the number of contractions in your initial proof. To prove this, you just have to observe that no rule introduces a new contraction in proof tree. And this one decreases the number of contraction by one. You can do this trick for any other rules "promotion vs sthg" to prove that this one will be applied only a finite number of time.