I think that the workflow you present is probably the best and only one available to you. You In TinkerPop terms, I would say that the workflow would be more specifically:
- run query - Use the Gremlin Console
- find a subset of a graph - Write your traversal in the console and dump the results of it into a subgraph. Use an in-memory TinkerGraph to store that subgraph - read more here.
- export - call saveGraphML on your subgraph instance
- process with graph-tool - import the GraphML into graph-tool and do what you need to do with it
- put data back into graph - I don't know graph-tool and its capabilities, but the Gremlin Console let's you work with data in a variety of ways that makes it pretty easy to shovel data around - read more about that here.