Добрый день!
Не буду усилий к ответу прикладывать больше, чем ваш праздны интерес к этому (потому как чую, что все равно дальше интереса не пойдет), но все-таки на основные моменты отвечу.
товары в магазинах вообще не пересекаются; для каждого магазина - свой контекст или свое поддерево товаров
Да, это можно. Только в шаблонах, где выборки общие выполняются, в параметры запросов дописать "where" => ["context_key" => $modx->context->key], так как сейчас просто выборка всех товаров в корневом разделе каталога выполняется.
номера заказов, желательно, чтобы отличались каким-то префиксом
Это вот уже префикс самому придется подшаманить. Дело в том, что id заказов - числовой. Можно конечно же просто добавить в таблицу еще одну колонку и фигачить туда префикс или свой кастомный номер заказа.
Ну и по опыту скажу, что изначально shopModx делался под магазин, который имел два отдельных домена, абсолютно разные скины у которых были (даже ссылки страниц и пути к картинкам разные были), при этом не то, чтобы товары в разных контекстах лежали, там вообще для товаров единый каталог был. Но у товаров были указаны и розничные и оптовые цены. На одном сайте выводилась розница, на другом - опт. Так что могу точно сказать, что подобные задачи shopModx-у по плечу изначально.