The problem turned out to be that I defined the google Storage Client object globally in my script.
When I refactored the code to be modular, and put the storage client & bucket initialization in the setup function of my DoFn, it started working.
I don't know why it failed silently like this and left no trace, this was such a pain to debug.