I'm planning to perform a step-by-step migration. This means I'll not just rip ThunarVFS out (like I usually would end up doing) and then try to fill the holes. Instead, I'll migrate from ThunarVFS to GIO in several steps, always trying to keep Thunar functioning while I'm at it.
There are several ways to do this. Their ups and downs have to be evaluated before I can start to work.
The general idea is not to touch the APIs at all in the beginning. Don't change function signatures. First replace all function bodies which use ThunarVFS with equivalent implementations based on GIO. Later go through all classes using GIO code and remove ThunarVFS references.