You can use just one canvas object, or even better a paster object. The paster object is about the same as canvas, but is much faster with webgl on.
Basically to do the reflection you set the origin of the object to be at the top, and position it where you want it in the editor.
Then with events you'd do this every tick:
1. clear the texture
2. set the height to -self.height to flip it
3. paste anything you want to reflect
4. set the height to -self.height to flip it back
The gradient could be done with another object on top, and the wave effect is simple with one of C2's shaders.