Several options are thinkable.
1 - Do not put well in the data structure (the current solution). Ugly, because it means that decorated Core data structures do not contain all the truth. It is very pragmatic since Gismos only use the CD file for now.
2 - Core transistors have 3 terminals. I do not know in that case how to extract p-transistors properly and have the well fused with the current Sinix engine. For example a very unusual place has to be found to put well decorations. I am not even sure if it possible to change the engine to make it coherently work, even if you are ready to have SinixImpl depend on CMosB.
3 - Core transistors have 4 terminals. I do not know in that case how to extract n-transistors properly and have all the substrate of the world fuse together.
4 - Core n-transistors have 3 terminals, Core p-transistors have 4 terminals. No problem to do the extraction and have the right thing happen. It is also probably no problem for the transistor schematics (the 4th pin of p-transistors is connected to the global wire "Vdd").
5 - Core transistors have 4 terminals, and we change CD to also indicate the substrate.
I think that 1 - 4 - 5 are the only possible options. The day we see a significant problem in the current option (1), we should jump to 4 (or maybe 5).