Power consumptions of the following 2 LED driving circuits
You have two methods. Method 1 diverts the current away from the LED but, the constant current is always flowing thus, you have more power taken from the supply.

Method 2 interrupts the current to the LED and this means the average current taken from the supply is smaller hence it is more efficient.

The spiking problem is caused by the constant current circuit going into overload when you disconnect the LED. The op-amp tries to keep the current flowing but it can't so it switches on the MOSFET (T4) as hard as it can (to no avail). When the disconnecting MOSFET reconnects the LED there is a current pulse because the op-amp has to stop driving T4 from being fully on and return to constant current mode.

Maybe try a different approach where you actually modulate the constant current generator. The input connected to the 2.5V battery shown on your circuit could be switched to Vcc - this then causes the op-amp to switch off the MOSFET T4. I think this would work better but the devil is always in the detail.