I think your basic premise is wrong - in your templating engine, instead of prepopulating any and all possible values on the object, you can just check if the property is set on the object using isset() before accessing it, and if not, just display that default value (the empty string probably). Writing a new base class for this feature is kind of an overkill.
That being said, all the issues you have with stdClass seem either superficial or to stem from a misunderstanding of how property access is done in PHP.
Instead, the correct way of calling lambdas stored as object properties, is to use parenthesis to force the binding order that you want, like this:
And that works well. You can even have the field name resolution be dynamic, like so:
$f = "m";
Summary: dynClass is basically a syntactic sugar coating for stdClass, and if you like artificial sweeteners in your code then that's perfectly fine - I'm personally am wary of the loss if readability that this incurs and would prefer to keep my property access looking more like PHP and less like magic. Though I think it speaks to how awesome PHP is, that you can do something like this.