Hi @rob
This has been asked before once or twice.
At the moment, the best solution is the one you proposed, where you limit the visibility of the buttons and use action buttons to edit the specific fields only when the user is editing their records.