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?