Not sure if this helps but for our jump-list / in-page anchor menu we went a different route and might be useful as a comparison. We don't auto-resolve labels at all; the editor adds a multi-content picker on the in-page-nav block, and the labels come from each picked block's own featurePropertyFeatureTitle property at render time (Razor reads block.Content.Value
("...") for each picked content key). Slugs we generate from the title server-side. No UFM, no client-side resolution. The picker just stores content keys; labels resolve naturally as part of normal block rendering. Means we don't have to know about block types in advance — anything with a title property surfaces correctly. Happy to share the Razor view if it'd help.