Hi Michael,
i don't know exactly what the layer parm is for and what it does during compilation but i can tell you what I experienced with using it on a AX2012 R3 CU9 environment. We have an ISV solution in ISV layer and if i compile without the layer parameter or with /layer=usr it creates those phantom objects in the USR layer. When i use /layer=isp it does not create any phantom objects, not in USR nor in ISP nor elsewhere.
When i compile them using the client (AOT) after using layer=isp theres is no creation of phantom objects as well. So this seams to be a potential solution.
Why exactly there is this difference I do not know.
best regards
Beat