Fix factories to generate unique SKUs

* Choosing random SKUs even from a high range can yield duplicates resulting in build failures.
* Kernel.rand(9999) was definitively never a good choice due the birthday paradoxon lets manifest a duplicate quite often
* Uses sequentially generated SKUs defined from a single shared and reusable generator.
* Please backport to at least 2-3-stable, should apply cleanly there.