Source code: Where is address encoding performed? I would like to experiment with having fewer characters (trimming a few characters at the end, and fewer checksum) for an address while still retaining enough for adequate security.

I've looked into base56.h but it doesn't seem to actually check addresses?
firstbits.com provides a service that links short values to longer addresses, which might be close to what you're looking for. 

You could easily shorten addresses by extending the character set that addresses use, but any non-standard way of sharing an address has to be usable by whatever person or software receives it. I'll leave it to someone else to point you to the line of code though.