I finally was able to replicate it, but it looks like we're doing everything correctly. The specifications of link local addresses all have a scope in the configuration file. It looks like unbound is not too happy about the same link local address being on multiple interfaces, but that's why scopes exist…
Checking sockstat, unbound is actually bound to the addresses it complains about, even with the different scopes.
It appears to be harmless, just log spam. Someone could report it upstream to unbound if they want.