I tried this a bit, and there are a few things that make it significantly more complicated. For starters, you can't use the object.count expression anymore, because that will get you the total count of all necks. object.pickedcount doesn't work either since we're running a loop per neck so there's only 1 neck picked at any given time. We also won't be able to use object.IID to keep our necks in order either, since set 1 will have IIDs from 0-5 and set 2 will have IIDs from 6-10 for example (it's not 0-5 for each one). I'll see if I can think of a more flexible solution later today.
Edit: Dynamically creating a set at runtime should be easier, it's just a matter of setting all the right variables and creating the associated parts whenever you create the body. However, you'll need to know all the data you need for the neck part to work properly first. It's best to work on one thing at a time.