You could just create a JOB and tasks, and keep it open, so User can log hours each month on it. If You need to invoice those hours, then You can generate sales invoice for the hours logged. Only when JOB is moved to finished state, users can no longer log hours on it - but otherwise it can be used for unlimited period.
You can also create several tasks within this JOB for different users, different periods or whatever the needs are.