For contractors, and even high cap volunteers we don’t give them personally named accounts but give them duty or ministry accounts. Something like Frontline@…, MediaStore@…, VideoProd@… this way if that contractor or volunteer leave or change roles we pass the account to their replacement.
If you are using Microsoft’s Non-profits licenses for O365 then I think that you may be breaching the terms of those licenses by assigning them to people outside your organisation. I suppose it could be ‘grey area’ but they are effectively one person companies that you are paying to do a job.
IMHO it would be better to set them up as guest/external users rather than assigning licenses.
Email addresses don’t really make someone an employee, that has more to do with how closely they are supervised (a contractor really shouldn’t be supervised the way an employee would be). As far as licensing goes, if they take over leadership of things then they often are considered for MS nonprofit licensing purposes of having the equivalence of a staff, which MS is okay with utilizing (often applies to a deacon, elder, or other lay leader as well). Other volunteer types need to have a volunteer license (F1 types are a good choice here). That being said, the easiest way to deal with subcontractors is going to be adding them as external users in AAD or, in similar fashion, just inviting them as external guests into Teams (probably the best option to make your HR guy really happy and still have easy-peasy communication/collaboration).