This sounds like a good plan to me. Fetchers were designed with very specific use-cases in mind, namely to help get relational data based on either ID of entity or ID or an entity that relates to it and the relation type (classical one-to-one, one-to-many and many-to-many relations).
Deferred resolver was designed to cover much more broad set of use-cases. In fact, Fetchers are actually implemented as a `DeferredResolver`. So if you have some non-standard or non-trivial fetching logic, I would suggest to use `DeferredResolver` + `Defferred` values directly. in your case, it would be quite suitable since you need to fetch just 2 types or entities: `Vertex` and `Edge` (`DeferredResolver` implementation becomes more complex if you have more entity types, this is why Fetch API was introduced in the first place).