Контекст должен быть один.
Сущность товара должна быть одна.
В твоем случае Shop\Product - это будет товарная позиция, но она должна быть связана с Catalog\Product, чтобы не дублировать сущности. Просто надо использовать аггрегат, получаемый либо от Product, либо от какой-то ещё сущсности (то есть сервиса, относящегося к сущности), например ProdcutCatalog, PriceList, Reporter или что-то ещё в этом духе.
Например сервис будет иметь метод PriceList.GetPriceList(from, to), а он внутри себя запросами уже делает нужный аггрегат, но при построении аггрегата, метод будет обращаться к таблицам, относящимся к сущности Product