We had a course in a tidal area that was subject to frequent damage by other boats, so our parts needed to be cheap and easily replaced. We used concrete block anchors with a short old ski rope upline with a sub buoy that ended in a loop about 3' below the surface at low tide. This part was permanent and we experienced no damage.
To the above we tied cheap small diameter poly rope that went up to the buoy and thru a large aluminum karabiner on the buoy, and back down to a sand bottle counterweight. The karabiner served as a pulley and we experienced no hangups. We drilled holes in the necks of the bottles to pass the rope through for tying. The small poly rope was tied to the upline eye and to the bottle with a bowline knot so it could be easily unknotted and replaced.
If the rig got run over by a boat, then the small poly line would break easily, avoiding disturbance to the lower upline and damage to the boat. We had to fiddle with the length of the small poly line so the rig wouldn't top out at high tide or sit on the bottom at low tide. Finally found a happy medium that worked at all but the very highest and very lowest tides.
We were lucky to have friends on private ski lakes who contributed their used buoys for us to use on the surface. We all carried sand bottles, karabiners, small poly rope and those used buoys in our boats.