If text and icon overlap, icon should cover the text

Ah, so you do want overlapping, but you want to control the z-ordering.

The order in which the objects of a panel are drawn is sequential. You need to make sure the TextBlock comes before the Shape or Picture that is the icon. For example:

    myDiagram.nodeTemplate =
      $(go.Node, "Auto",
        { width: 100, height: 60 },
        $(go.Shape, "RoundedRectangle",
          { fill: "bisque" }),
        $(go.TextBlock,
          new go.Binding("text")),
        $(go.Shape, "BpmnTaskUser",
          { width: 16, height: 16, fill: "white", alignment: go.Spot.TopLeft })
      );

produces:
image