For what it's worth, I was able to make the FlexViewer Splash page re-openable. I turned it into a widget (using viewer:BaseWidget), added the additional UI I wanted, and moved the configuration to HeaderController (the class that re-launches the Splash page). I changed the Splash page to use HeaderController's configuration file (HeaderController.xml) so that it could get the content as splash.content and splash.btnlabel. HeaderController gets the same configuration and passes the content and btnLabel to the splash page widget's show() routine. show() does pretty much the same thing as HTMLPopup.show(), except that it returns a SplashPageWidget instead of an HTMLPopup.
Not the best solution, no doubt, but it works for me.