I was just thinking on the drive home that I could implement the Vigenère cypher as a CUFP as a companion to your post.
I also figured out how to use a stream cypher: treat the legal character set as a wheel, and use the output of a pseudorandom sequence (as set up initially with your key) as a count to shift the wheel. So even though the sequence produces numbers in the range 0..255, I can map that using modulo addition. That doesn't 'feedback' though, so I need to throw the current character into the sequence generator as it's encoded.
I also wonder if RC4 can be trivially adapted to use an arbitrary sized alphabet.
Using Enigma, generalized to any alphabet, is just plain cool, too!