After implementing the aforementioned step 5, you will find that the performance of everything, including the threaded code, will be quite a bit worse. Frankly, this is probably the most significant obstacle to have any kind of GIL-less Python with reasonable performance.
PyPy would actually make a significantly better basis for this kind of
experimentation, since they *don't* use reference counting for their
memory management.