I'm not sure if you're running into "buggy" behavior or not. It is possible color-key alpha doesn't support what you are trying to do, and it is possible that you are either defining your pixel data wrong, or that there is some sort of bug (video driver or pygame) that you're experiencing.
But I do have a work-around for you:
http://www.pygame.org/docs/ref/surface.html
There are three types of transparency supported in Pygame: colorkeys, surface alphas, and pixel alphas
You could try pixel alphas. It will be more flexible than color-key alpha, and should support blending as many layers as you want.
You can do this by passing SRCALPHA
when creating the surface, and ensuring that your input pixel data has a properly defined alpha channel.