You ignore the main point of my argument, namely that the binding being static for a local variable simply is a result of the fact that there can't ever be any alternatives in that case.
You say that it "can't" be any alternatives, but what you mean is that we have constucted the language such that no alternatives base on dynamic environment are considered. In the same way, we can make binding of constants not consider alternatives based on the dynamic environment.
To show what I mean, consider:
class X { constant a=1; int foo() { int b=7; return a+b; } }
class Y { inherit X; constant a=2; int foo() { int b=14; return ::foo(); } }
The variable "int b=14" _could_ be an alternative to "int b=7", when X::foo() is invoked in an object of class Y (dynamic context). But it isn't, because we don't want it to be. In the same way, whether "constant a=2" is an alternative to "constant a=1" is purely a matter of choice.