Still, the inablity to retrieve "player.target.speed" is something that really scares me, because it won't come up until my code is well established. I don't want to have to make a base class with a lot of extra parameters.
This is why messaging is convenient. You send a message to the object, if the message is relevant it does what it's told, otherwise it does nothing.
Another thing you could do is have a hash table for each tEngineNode and store the data in it (somewhat like a symbol table, maybe..). So then you just do node.properties.GetEntry( "speed" ). However, I prefer messaging.