Function of 开了 in 我开车开了半天了
Basic SVO form: "我开车" (I drive) = [我(s)+ 开(v) + 车(o)] or [我(s)+开车(v)]
Add description of the duration : [我开(半天)车] = [I drive (half a day)]
Add verb particle '了' to indicate the verb is completed : [我开(了)半天车] = [I (have driven) half a day]
repeat the verb 'drive'  to emphasize it : [(我)(开车)(开)(半天)] = [(I) (drive), (drive) (half a day)]
Add verb particle '了' to indicate the verb is completed: [我开车开(了)半天] = [I drive, (have driven) half a day]
Add particle '了'  at the end to indicate the duration has been completed : [我开车开了半天(了)] = [I drive, have driven half a day (already)]



  Is there a kind of construction verb+object+verb+了 and if so, what are the other use cases?


Yes: 

The following Examples' structure are the same as above

游泳--> 游一小時泳--> 游了一小時泳--> 游泳游了一小時--> 游泳游了一小時了

打工--> 打一天工--> 打了一天工--> 打工打了一天--> 打工打了一天了

吃飯--> 吃飯十分鐘--> 吃了十分鐘飯--> 吃飯吃了十分鐘--> 吃飯吃了十分鐘了