You could probably accomplish this with a workflow and an additional custom form. The form would have most fields set to Inline or disabled and the workflow could set the form before record load based on the user or user role and the approval status.
It would also depend on how many fields you want to lock down, the type of field, and if the periods are closed. If you only wanted to lock a couple fields while the period is open, it might also be done with a simple workflow setting certain fields to Inline or disabled before record load.
These are just my first gut reactions without any discovery.