Basically, in a new folder, dedicated for shop blueprints, the server owner can place the shop-blueprints. The game will keep track of them in a register file, linking an integer to each of the blueprints.
Then, when a shop is generated, a random integer(within the range of the register) is generated, and stored in the .ent file of the shop. Whenever the shop is loaded, the integer will simply act as a reference to the immutable(uneditable[ingame]) shop-blueprint.
If a shop-blueprint is added later on, it is given a new integer value, and thus no existing shop will end up being replaced by it(which might cause the shop to clip into a nearby station, that was built before the shop changed).
If the blueprint associated with that integer cannot be found, the hardcoded shop is used. (It is the server owner's fault, if the removal of a shop-blueprint without a universe-reset causes any errors IMO)