I would start by looking at StagedAnimation::end and TouchableOverlay::end, particularly for any unhandled NULL pointers, dangling pointers (i.e. stuff you deleted but didn't set the pointer to NULL), or uninitialised pointers.
This turned out to indeed be the cause: when the network connection is bad sometimes the StagedAnimation being used there doesn't exist and TouchableOverlay::end didn't check for that. So this was indeed a simple case of accessing a NULL-pointer.
Also, that means that in this case, the crash report was correct about the stacks, but incorrect about which thread had the problem. Good to know that this is behaviour that can happen in Mac crash reports!
Thanks for the help, folks!