I'm 100% positive it's not the bootloader now, I tested the board and the heater doesn't turn on until Marlin sends PWM signals to drive the cooling fan on the board. I don't think it's configured open drain, but just to check that, how exactly would I specify that to the firmware, the github page is a bit less clear on that.
Assuming it's not open drain, where in the firmware would the program "begin" (ie what line of code in what file does execution begin on?) I assumed it was MarlinCore.cpp in the setup() function, but I don't think that's correct, because even after adding "OUT_WRITE(HEATER_0_PIN, HEATER_0_INVERTING);" to the line directly under "void setup()", I still have the fan PWM start before the heater turns off. I added this line just to see if I could force Marlin to turn the pin off immediately at boot, just as a test. Any ideas?