We have also solved this by hiding the real sublist and adding a custom one in Beforeload adding all columns and checkboxen that we want.
In before submit we handle what the user has done in the custom sublist to apply to the real sublist.
This way there isn't even an option to add new lines as the sublist is of a type that doesn't allow it.
Perhaps it is possible to change the sublisttype on the real sublist?