結局、現行のPythonでは、文字列のように振舞う非文字列クラスは作れるけど、
unicode文字列のように振舞う非文字列クラスを作るのは困難なので、
暗黙のencode/decodeは避けられず、
ある種のライブラリでunicodeを使うなら、sys.setdefaultencoding("utf-8")せざるを得ない、ということなのかな。

unicode文字列はtemporaryな使用に限定して、原則的にutf-8 encodingなstringで保持すれば、
暗黙のencode/decodeは避けられるのかもしれない。でもどっちみち、asciiのままだとどこかで綻ぶ気がする。

プロセス毎のdefault encodingの指定はこれでいちおうできる(どんなデメリットがあるかはわからない)。
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

次はSQLObjectでの日本語使用の可能性を追求したいと思います。