This looks good, but while we're at it, B2 doesn't need to be calculated again. It's computed at the very start of the loop, and it's stored in B2. Since there's an if-statement there for UseMHDCT or MHD_RK, we don't need another one when the magnetic energy is subtracted. It's done nicely in the time-interpolation case in the else portion of the (time == Time) statement.
I moved the calculation of B^2 and kinetic energy into the if-cases that actually use them. Not all cases require those values to be calculated, so now they are not calculated unless they will actually be used.