Mixing image texture makes everything transparent
The last mix shader on your node tree is just making your shader a 50% mix of two other shaders, but not using any transparency to control the mix.

Get rid of the extra mix shader and mix the two shapes together directly:


(click on the image to enlarge)

I'll break it in pieces so that is clearer:

When you are using an alpha channel you are using a black and white image to control how two things mix. White is used as opacity, black as transparency. Anything in between will be semitransparent.

If you use the Alpha channel to mix shaders, the white portion of the image will be using whatever shader is connected to the bottom socket. The black portions will use the other shader connected to the top socket. In this case Black will become transparent and white a Diffuse shader.


(click on the image to enlarge)

To mix the other image you use the same approach:
Using the alpha channel you just select to use a diffuse shader over a material that has areas that are already transparent.


(click on the image to enlarge)