Do we have tests that show that loader does not set the types? Calling SetTopology(0) invokes the loader, it's not immediately clear which part does initialization. Does MFSESSION_SETTOPOLOGY_NORESOLUTION also set the types? Another variant is setting with zero flags, but with MF_TOPOLOGY_RESOLUTION_STATUS set to "resolved".
Setting first accepted type is weird, because it could easily cause mismatched types with upstream node, but if that's what it does..