I had a pretty similar idea in the past - the tricky part is to make it solveable while following the most important rule:
Only non blocked elements can get rotated.
So in the screenshot above you see the ball? the blocks surrounding them cannot be rotated as they block each other.
This means while you create blocks you always need to "solve" them internally. Means you need to check if the ball at is current location can have (if player properly "rotates blocks") a valid route to the end.
In "Apes Banana Conquest" I had a similar "is it playable" issue and did it in a simple way: My level was always pregenerated so much, that at least twice a screen-height (it moved upwards too) was precalculated - so there was enough time to find the right spot to move on.
Also try to avoid "dead ends" (having elements on the left - and on the right - but nothing in the middle, so you need to decide wheather to go left or right just to find out that your route end a "screen later" when you cannot undo your decision).
@ ideas
You might later on add special fields: warp elements (warping you from X to Y when moving across them), slopes/jumps to fly over empty "cells" .., (temporary) speed-up/down blocks...
bye
Ron