I did this research into #bevy reflect internals because I started doing load/save with bevy_save. I was misuing it to generate multiple save files in user-specified locations. It gave me a good jumping off point, but ended up being a dead-end.
bevy_save deserialization is done via reflection. Right now every type (even nested types) must be registered with bevy_reflect for this to work. I also hit some Hash reflect headaches too.
Both of these have open PRs, so they'll be resolved.