So most problems probably are with the gen8 and gen9. Things changed quite a bit since gen8. This was the first ILO4 machine and discovery of such servers should not be done by discovering the OS/server.
The server should not have a SMH, WBEM agent and/or SNMP and snmp subagents. These servers should only have the agentless Management software. The ILO should be discovered and the datacollection of the ILO will add the server. The server talks with the AMS service on the server and give OS information.
so first delete your Gen8 and newer servers and ILO's, then readd the ILO's. This should work. The only real problem that you can have is that you have credentials in the general settings and that after some time the servers that were added by the datacollection of the ILO. When this happens you get your errros back with the datacollection.
The only real solution is to create seperate discovery jobs for servers older then the Gen8 server and set windows discovery credentials in that specific job. This way the working Gen8 and above will not try to use the credentials. I also changed the datacollection job to run this job on everything exept gen8 and above servers. This can be done by creating a new collection that matches this criteria and change the datacollection job to use the new collection.