> In such cases isn't it better to just let this suboptimal but tested and working code depend forever on an optional BKL?
If every use of the BKL is removed, the code which magically releases and reacquires it on a context switch can also be removed. This cannot be done if there is even one single user.
Not to mention that it is also a good canary for bit-rotted code. It is most probably not "tested and working code"; said code usually depended on some property of the environment which has now changed (this is how bit rot happens).