I have a way that I have been planning on implementing, but it might be super slow. Essentially I was going to make a CCSprite derivative with a fragment shader that uses a point-in-polygon test to determine whether the alpha should be zero or not. I suspect this might be really slow because you are testing every pixel with a point-in-polygon algorithm, and probably not the right solution, but it would work. Cocos2D 3.1 made shaders super easy to use. I think you could use the default vertex shader and for the fragment shader you would pass it a uniform with the polygon points.
There is an example at http://www.raywenderlich.com/4428/how-to-mask-a-sprite-with-cocos2d-2-0 about how to use a fragment shader to use the color of an overlay image to determine whether the fragment shader should make the primary CCSprite image have alpha transparency or not. This is an alternate approach to testing the point-in-polygon for each pixel.
I guess the answer is that I'm not sure there is a solution pre-built for you, but I am really glad I took the time to learn the basics of vertex and fragment shaders because they seem so powerful without having to learn a lot of the nitty gritty details of OpenGL.