This is obviously at root an nvidia driver issue, is probably ~impossible for you to debug on top of that, and is quite possibly system specific, but hey, maybe you'll find it useful or someone else will have this issue too, and I was bored and did some digging.
The hang in the one crash I went through the trouble of looking through occurred in glXDestroyContext, as called by xdpy_destroy_display_hook_default in backtraces.log. Just LD_PRELOADing that with an empty replacement wasn't sufficient, and neither was patching xdpy_destroy_display_hook_default to immediately ret.
The attached core dump is a bit hacked up - gdb didn't work on a thread hung in kernel, so the core has the general registers from the presumably-interesting thread patched in; I didn't bother with fp/sse or updating the tid metadata so those are all wrong. The delta-<pid> files are xdelta3 patches to the core file for the other threads.
Vsync was irrelevant, the sprite cache was irrelevant, nvidia drivers 384.90, 387.22, 387.34 all fail, nvidia.modeset=0 or 1 fails, gentoo-sources kernel 4.4.39 and 4.12.12 both fail. I haven't tested lower graphics settings and am planning on playing the game now rather than repeatedly crashing my system