Well, my goal is that the get/set_from_package_key procs should slowly disappear.
The only reason singleton services are instantiated are so their parameter values can be created.
If you call the get/set_from_package_key procs with the package key for a non-singleton package that has multiple instances, you'll get an error since the db_0or1row call inside db_string will return more than one row.
It's particularly nasty because if you make this mistake and test on an install where you've only created/mounted one instance of your package, it will work great.
Mount another instance, boom, your package dies.
So moving to a world where singleton, non-mountable services have their parameters declared global and aren't instantiated is in the back of my mind, and facilitating that path seems easier by providing a new API call. It would make it much easier to track down/weed out the old get/set_from_package_key calls later package-by-package, grep-by-grep.
That's my thinking, anyway. Of course, I may be living a fantasy to think that getting rid of needless package instantiations will ever really happen! :)