Consider adding concept of locations into companies.
So it is possible to have different sets of bank holidays within same organisation. E.g. if company has offices in different countries.
Here is a comment of one of our customers:
"... Our company is international, which brings a load of complications concerning different calendars and vacation time rules for each country. To generalize it, being able to define different sets of public holidays and determining which set a person gets is the sort of flexibility that we would need.... "
UPD.
Consider generalising concept of department into a "group" of employees.
Each such group could bring particular attribute to employee, such as bankholiday set, visibility etc.
Employees are to be part more then one of such departments/groups.