So each silo owns a widget, right? Consider the silo to be in charge of its own widget.
- the save game asks silos for their (widget) data
- save that (or, better, save silo data)
- load → fetch silos → supply them with the loaded data → each silo processes its own widget
You’d still need IDs but it would make more sense to ID silos rather than bother with individual widgets. Consider it.