the reason the motor is loose before you initially issue a step command is because at that point the stepper coils haven't been engergised, so the L293d is ENabled via the enable pins and ready for you to step, once you step the first time the appropriate coils become energised and stay energised until the state of the EN 1,2/3,4 pins change or the motor is 'stepped' again, I'm guessing you've got yours tied to VCC? which is why it all gets hot straight away and stays that way. I believe you should be able to use a couple of pins on the arduino to toggle the state of the EN pins so that once you have finished stepping you turn off the EN pins which will keep the heat down. The downside of that is that once the pins are disabled the motor can no longer hold whatever it is turning, so gravity etc. will come into play. you might want to adjust your strategies to cope with the different scenarios. like:
enable, step, disable (single step mode, not worried about 'holding' feature of motor)
enable, step0, step1, stepN, disable (Multiple steps, using holding/detent torque)
Or leave it as is and have all of the features the stepper gives
