This roughly follows that, except it jitters left and right instead of moving diagonally. Being done in a shader we can't actually move pixels. We can only change them. To do this it detects patterns and changes pixels.
Doing it with an array can also be done. It looks good but does not scale like the shader can.
Anyways it may be possible to do diagonal motion instead of horizontal.
White doesn't fall which explains why much of the init graphic doesn't fall.
Things move a pixel at a time so to make it spread faster pixels either need to move further every step or the effect needs to be applied multiple times. You can add a repeat condition to the second event to do the latter.
I don't understand the second question.
To fall it spreads out vertically first, which makes it look to fall slow. I see no solution to this if done from an effect, and the web seems to lack examples to this except for one on shader toy. However I lost interest in analyzing how it works and mapping it to what we can do with effects in C2.
Also I found a way to test it. If I couldn't do that it would be broken in many ways.