Simulating TYPO3-Template-Engine
What about using entity references. You mention the field-collection approach, which has the same overhead as using entity references.

Basically you create a few node types that each conform to a different block element that you require. Then you create a master node with an entity reference field and select all of your block element node types as candidates, and set the filed count to unlimited. Then also use the inline entity form.

This will work but has a heavy server load.