Cause of shoot-through in H-bridge
Some driver circuits dont have UVLO [undervoltage-lockout], and they can come on wrong or oscillate at the beginning of the work cycle. Do a transistor Schmitt-trigger undervoltage-lockout circuit with several independent outputs: one output to keep the driver disabled by applying a shut-down on its input, and other outputs to keep the gates of MOSFETs down to source voltage (careful with the upper transistors gates, they have different source potential and therefore the transistors to lockdown them should be kept on by some voltage shifters, like the voltage shifter in the H-bridge driver inside the integrated circuit...)

The trigger should release the gate lockdowns and the driver shutdown simultaneously, or eventually prioritise the lockdown of the top mosfet by the synchronous diodes lockdown (the top mosfet to not be possible to be "activated" without diodes being "activated") Am sorry but my english may be not very well inteligible here... Try use anyway a safety circuit to not release the gate of transistors (to shunt them to source) for a few miliseconds after the battery is first applied.

A possible help (yes, i suspect more the #two of your guesses) can be use of a coil on the supply wire, several tens of microhenries, plus several thousand microfarads parallel on the supply lines. This will slow the voltage rise on the supply and possible avoid Miller charging of the gates. Calculate the number of microhenries and microfarads to slowdown the rising voltage to 0,5-1V/microsecond and should be fine from this point of view.. But from my opinion, i will apply the previous method, the UVLO circuits..