For a multiblock structure of that kind, you use a central block (containing a tile entity with a model, = the waterwheel) and fake blocks around it which are invisible but have collision, so they block the space.
For a multiblock forming/unforming code you will need tileentities in your fake blocks too. I would use a Master TileEntity in the middle and slave Tileentities around it. How exactly you code the multiblock depends on how you want it to function. should it be built by the player? Or only one block should be placed and the fake blocks spawn automatically?