Hmmm... another way to do it would be to ask people building a model to wrap the lambda in a macro, which would substitute "ConcreteOrSymbolicNormal" for "Normal"... in that case, the macro would get an expression, so would be able to do substitution easily.
The basic problem is that the current way of declaring a model uses the class name "Normal" for the constructor, not another function name which could easily have an alternate signature for the symbolic case.
