Aha! I had better luck with the following:
newsurf=pygame.Surface((128,128),flags=pygame.SRCALPHA)
newsurf.blit(sourcesurf,(0,0))
newsurf.blit(masksurf,(0,0),None,pygame.BLEND_RGBA_MIN)
(This time the mask surface was entirely white with the alpha channel
storing the intended mask value.)