refactor: Use override for non-final overriders
refactor: Remove override for final overriders
Two commits are split out from PR16710 to make reviewing easier.
From C++ FAQ:C.128: Virtual functions should specify exactly one of virtual, override, or final Reason Readability. Detection of mistakes. Writing explicit virtual, override, or final is self-documenting and enables the compiler to catch mismatch of types and/or names between base and derived classes. However, writing more than one of these three is both redundant and a potential source of errors.
This is a backport of Core PR18914
Most of the work was done already in D767