Leave the Placeholder as:
$(go.Placeholder,
{ padding: 12, alignment: go.Spot.TopLeft }),
and add this to the initialization of the Diagram:
"InitialLayoutCompleted": function(e) {
var diagram = e.diagram;
diagram.nodes.each(function(n) {
var grp = n;
if (grp instanceof go.Group && grp.category === "") {
var memberctr = diagram.computePartsBounds(grp.memberParts).center;
var lanectr = grp.findObject("SHAPE").getDocumentBounds().center;
diagram.moveParts(grp.memberParts, lanectr.subtract(memberctr));
}
});
},
Basically, after everything has been loaded and laid out, it moves all of the lane/group contents to be in the middle of the lane.