I’m interested why you don’t think 300 rows is a good idea – surely a CPT has more database overhead?
Anyway, this post helps;
if you add the line
add_row('repeater_name', array("","")); in the
while loop, (obviously as many empty values as sub fields), then it will add the rows too.