Think I found the problem with the matron not setting back the girl's day jobs after resting.
Method signature for HandleSpecialJobs on cJobManager is:
bool cJobManager::HandleSpecialJobs(int TargetBrothel, sGirl* Girl, int JobID, int OldJobID, bool Day0Night1, bool fulltime)
But when calling from cBrothel (line: 1543), it provides JobID and OldJobID in the wrong order:
g_Brothels.m_JobManager.HandleSpecialJobs(brothel->m_id, current, current->m_PrevDayJob, current->m_DayJob, true);
Haven't been able to build the solution to prove that is solves the problem, but seems like a likely candidate.