This needs to be a many-to-many relationship (like a database many-to-many linking table). It would allow us to specify for any pair of catalog which sets of components in one catalog should replace which sets of components in the other catalog.
I think we need to make a new object for this along with a new file format and some methods to allow people to build new catalogs using these.