What is the difference between these two in a Bind9 setup? Also when one updates his list of current root servers, does one add them to root.hint or db.cache? I find multiple explanations online and none are really clear/
There is no difference. They are both hint files. Look at the configuration of the "." zone in your named.conf:
Mine is actually called "named.cache."
root.hint is a zone definition which points to a cache of the root name servers. Once it is configured it should never need to be updated. It does not need to be be a seperate file. On my system the zone definition is include in a file which contains various default zones including '.', 'localhost', '0.in-addr.arpa', and others.
db.cache is a cached copy of the root name servers. The file name can be different, but must be one specified in the '.' zone definition. It can be updated periodically (once every year or two should be adequate). The root namesevers don't move often. According to the header of my cache a new version can be obtained as file /domain/named.root from FTP.INTERNIC.NET or RS.INTERNIC.NET. The root server list can also be retrieved with the dig command.
The current bind version will update the root server list from a root server during startup.