i can provide one solution from ORDER SAVE badi.
check the status of contract in this badi and raise the do not save exception with appropriate message if there is anything changed apart from status .
CRM_EVENT_PASS_INFO_EXE_OW you can use this FM to find out is it only status changed or anything else changed by sending the GUID. based on that you can allow the save or not.
hope it helps.