ScriptableObjects not saving hierarchy

I tried posting about this in the Answers space, but that seems to be flooded quite quickly. Maybe someone can catch this here?

http://answers.unity3d.com/questions/361233/instantiate-not-duplicating-scriptableobject-hiera.html

Basically, the problem is that ScriptableObjects saved using AssetDatabase.AddObjectToAsset() function properly in every way, except the prefab doesn’t instantiate them at runtime but reads them from disk.

This causes all instances to reference the same data.

Is there some way to fix this, or will I simply have to hack the code to use a MonoBehaviour instead, even though the whole point was to not have to have the objects in the world?

Is the only way to sort this out to use MonoBehaviour for all classes? Is there no other way to get child objects to behave properly?