Add a parallel COMPONENT_HOLDERS volatile cache to DataDrivenItemRegistry, rebuilt from raw componentConfigs every time definitions are loaded via reload() or mergeAll(). Cleared alongside DEFINITIONS in clear(). Two accessor methods allow looking up a ComponentHolder by ItemStack (reads tiedup_item_id NBT) or by ResourceLocation directly.