After some tinkering, I was able to get the desired result. Connecting the RunOnce output to DEF_ENABLE did not work because DEF_ENABLE only copies the default value to the output, but does not write it to memory. I also found that if the read input is True, it overrides the IN-ENABLE and DEF_ENABLE inputs and pulls the value from memory instead of the input or default.
I ended up using the Non-volatile Memory Dynamic block without default because the default option seems to provide a second input that I don't need. To make it work, I had to connect the IN-ENABLE and WRITE_ pins to the EE_Run_Once output, then connect the READ_ pin to a NOT block connected to the same EE_Run_Once output. When EE_Run_Once is true, it copies the input value to the output and writes the output value to NVM. When EE_Run_Once is false, the READ_ pin gets a true signal, enabling the block to read from the value stored in memory. I've attached a screenshot for anybody that would like to see.
Hopefully this helps somebody else in the future.