Keep GIL but introduce Workers a la JS [0] ?
Worker [thread] is a sandboxed VM [context] with its own GIL.
Communication between these is done through messaging so no sync primitives are required.
Go's routines have similar concept.
I think that if it OK for Go it should be OK for Python, no?
[0] https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers...