I have this working perfectly now.  I'm very relieved not to have had to go to GL.

I basically draw the first (red -- at 12 o'clock) gem with a mask only allowing the right half to be visible.
Then I draw the remaining 11.
Then I draw the first one again, this time setting the mask to only show the left half.
    for( int i = 0; i <= 12; i++ )
    {
        for ( int dullGlow = 0; dullGlow <= 1; dullGlow++ )
        {
            BOOL isDull = ( dullGlow == 0 ) ? YES : NO;
            CALayer* L = [CALayer layer];
            CGImageRef dullImage = [ButtonImages dullImage: i % 12];
            CGImageRef glowImage = [ButtonImages glowImage: i % 12];
            L.contents = (id) ( isDull ? dullImage : glowImage );
            L.bounds = CGRectMake( 0, 0, buttonSize, buttonSize ); 
            L.opacity = ( isDull ? 1.0 : 0.0 );
            if( i == 0  ||  i == 12 )
            {
                CGFloat halfSize = buttonSize / 2.0;
                CGRect keepLeftHalf = CGRectMake( 0, 0, 
                                                 halfSize, buttonSize );
                CGRect keepRightHalf = CGRectMake( halfSize,  0, 
                                                  halfSize, buttonSize );
                CALayer* maskLayer = [CALayer layer];
                maskLayer.frame = ( i == 0 ) ? keepRightHalf : keepLeftHalf;
                maskLayer.backgroundColor = [UIColor greenColor].CGColor;
                maskLayer.edgeAntialiasingMask = 0x0;
                [L setMask: maskLayer];
            }
            [self.layer addSublayer: L];
            layers[ dullGlow ] [ i ] = L;
        } // dullGlow
    } // i
Setting edgeAntialiasingMask's 4 least significant bits to 0 terms of anti-aliasing on all 4 edges -- without this line I was getting a seam.
I would be very grateful if someone can explain the mechanics of the masking process -- though I achieved the correct result, I did it by trial and error.
Notice that the mask is set to ( opaque ) green, and it is the masked area that is visible -- ie for the first pass the green rectangle is covering the right half of the image,  and it is this love that gets displayed.
I am guessing that for each pixel it is multiplying the layer-pixel RGBA by the alpha value on the mask-pixel