As you already correctly stated, you currently calculate the throughput time on item level. In order to calculate on header level, your dimensions have to be set to the respective header and the throughputtime aggregated. On VBAK Level this would mean:
Dimension: VBAK.MANDT, VBAK.VBELN
KPI: AVG(CALC_THROUGHPUT(<%=from_occ%>_OCCURRENCE[<%=From%>] TO <%=to_occ%>_OCCURRENCE[<%=To%>], REMAP_TIMESTAMPS("_CEL_O2C_ACTIVITIES".“EVENTTIME”, <%=unit%>)))
This would give the average throughput time on header level. Viable choices also would be MAX, MIN, etc. If you want to calculate the actual throughput time on header level between first Activity any case to last Activity any case, this would be something more complicated, but can also be solved.