I don't see why you need a model at all. This seems like a simple counting problem. Here is SQL that finds pairs where one employee takes leave and another gets overtime:
select leave.employee_code, overtime.employee_code, count(*) as occurrences
from time_off leave
join time_off overtime
on leave.employee_id = overtime.employee_id
and leave.period = overtime.period
where leave.leave_hours > 0
and overtime.overtime_hours > 0
group by leave.employee_code, overtime.employee_code
order by occurrences desc
In dplyr:
time_off %>%
filter(leave_hours > 0) %>%
select(employee_code) %>%
inner_join(time_off %>%
filter(overtime_hours) %>%
select(employee_code),
by=c("employee_code", "period"),
suffix=c("_leave","_overtime")) %>%
group_by(employee_code_leave, employee_code_overtime) %>%
summarize(n=length(employee_code_leave)) %>%
arrange(desc(n))
Note that I haven't run this code, so it might have typos or bugs, but it should be close to correct.
To explore the relationship between leave hours and overtime hours, you don't even need the employee pairs, you can just aggregate by period and make a scatter plot.