I changed a little bit my original intention with the following approach (which has also less impact on the API):
Code:
/** Add a few new entries to "H3DModel" enum. **/
struct H3DModel
{
enum List
{
// ...
AnimStageCountI, // ... [read-only]
AnimStageTimeF,
AnimStageWeightF,
}
}
/** Deprecate old "h3dSetModelAnimParams" API function. **/
Basically, that's it!

Adding these new values, let us to use existing interface to query for these parameters.
For example:
Code:
H3DHandle model;
int stage = 1;
/** Query for the elapsed time of stage 1 of the current model. **/
float time = h3dGetNodeParamF(model, H3DModel::AnimStageTimeF, stage);
/** Advance animation time. **/
h3dSetNodeParamF(model, H3DModel::AnimStageTimeF, stage, time + dt);
/** Change weight value. **/
h3dSetNodeParamF(model, H3DModel::AnimStageWeightF, stage, 0.5f);
/** Retrieve the number of active stages for the current model. **/
int active_stages = h3dGetNodeParamI(model, H3DModel::AnimStageCountI);
Obviously, changes to the internal API are necessary (to "Model" and "AnimationController" classes).
What do you think about this solution?
PS: A question. Why "Model" doesn't inherit from (or, better, why doesn't integrate the API of) "AnimationController"? What's the point to have this level of indirection?