I was getting annoyed at myself for not understanding what was going on . The confounding problem was that the set of prefs that I was restoring had adb disabled, so I couldn't get a logcat to see what was really happening.
Long story shorter...
After some more fresh installs, I think what I have sorted out is that all of my preferences files lost their correct ownership. I found that when I had a program that was crashing, I would log in to an adb shell, use ps to see what user the app was running as, for example app_82. Then, I would chown app_82.app_82 for the directory within /data/data. I would then to it recursively since busybox doesn't have -R for chown by issuing the command chown app_82.app_82 /data/data/com.android.weather/cupcake/* and then chown app_82.app_82 /data/data/com.android.weather
It fixes programs that were having problems accessing their sqlite3 DBs which was the clue in the logs that led me to this solution.
As I am going through I see that it improves the performance and error rate of programs by doing this. Obviously core functionality doesn't have the same ease of repair.
Is this the wrong thing to do here? Is there a better way to restore files after an upgrade so that this doesn't happen again?
I saw that someone wrote a python script to fix these permissions, though I don't understand where they got python to run on Android in the first place. Is there a shell script that can parse an app's uid and fix its supplemental files accordingly?
I tried searching, but may not have used good keywords about this issue.
Any help/advice/info would be appreciated.