It is not expected that UHRSWORK and WKSTAT should always correspond, since the reference periods are different: last year and last week, respectively. This explains the discrepancy between these two variables.
As for HRSWORK and WKSTAT, these variables essentially have the same reference period, so any discrepancies require a bit more explanation. Those coded as full-time workers with HRSWORK < 35 are persons who typically work full-time but took time off of work in the last week. At the extreme, those full-time workers that reported HRSWORK=0 are coded as EMPSTAT=“12: Has job, not at work last week”. In other words, they are full-time workers, but they did not actually go to work last week (i.e. the NIU cases you mentioned). Similar reasoning applies to full-time workers who worked between 1 and 34 hours in the previous week. Keep in mind that taking a paid holiday does not count as working since the person was not physically at work.
In contrast to your final sentence, I do not see any similar oddities for part-time workers and HRSWORK. All part-time workers have HRSWORK < 35, as expected. Similarly, all unemployed persons are coded as HRSWORK=0.
Hope this helps.