Well, I've made some more progress, but still not all there. I took a look at the logs (better late than never), and saw PHP fatal errors that "allow_call_time_pass_reference" is no longer supported. Apparently this directive has been deprecated since PHP 5.0.0, but it was actually removed in 5.4.0. Since this directive appears in php.ini, it was causing errors. I'm not at all clear how PHP pages continued to function with this fatal error in place, but they did. I made a new custom template fragment for 10LanguageOptions commenting out that line, removed everything in /etc/e-smith/sql/init, did signal-event post-upgrade, and rebooted.
The improvement is that all the SQL init scripts ran without errors. After rebooting, horde-db-migrate also (1) returned some output, and (2) appeared to complete successfully--but it didn't say anything about horde itself, just the other component apps. The horde database tables in mysql aren't changed, either.
Further investigation suggests that my pear installation is borked, or at least not what it should be for this application--there is no horde channel, for instance. Several of your php-pear packages had already been installed from the remi repository, almost all of them the same versions.
For the conflicting packages, I ran yum downgrade to force installation of your packages. I then did yum reinstall Horde* php-pear*, post-upgrade, reboot. pear list now shows a lot more packages than before, but pear list -c horde still says 'Channel "horde" does not exist'.