It's great to see that you have made some progress. If possible, it would be awesome if you could contribute your implementation to the community!
Yes, modifying `ExpirationKCVSCache` is enough. `GuavaSubqueryCache` and `GuavaVertexCache` and transaction-wise cache, so you don't want to make them global. `RelationQueryCache` and `SchemaCache` are graph-wise cache, you could make them global, but not necessary since they only store schema rather than real data - actually I would recommend not doing so because JanusGraph already has a mechanism of evicting stale schema cache.