From the datasheet I learnt that the output enable on the SRAM pins will go low when write enabled. So I don't bother controlling that pin anymore, just turn it on at the start.
Then when I want to write I leave enough time for things to settle. I added a counter (wait_counter) to accomplish this. I think I can probably trim it down to finish faster but right now I'm just very happy to not have any of these annoying and unpredictable crashes any more.