You do have the right field already - when a timesheet is POSTED it does not affect this "Approved By" value (it does affect the last_updated_by value though).
So if your contractor timesheets say "Approved by process administrator" then you will have a process somewhere that is approving those timesheets - not a actual user!
(PRTIMESHEET.PRAPPROVEDBY is the field on the database which contains the user id of the approver).
Some further discussion here ;
Timesheet approver