I use a combination of .ssh/config and screen:
First (as mentioned in several previous answers) I configure my .ssh/config file so that I can use short names and skip typing my username (which is not the same as my local machine's username, so it's good to have it explicitly in .ssh/config), and preferably use public keys for password-less logins.
I have an alias (or function) which lists all the hosts in my .ssh/config file, so if I forget the names of them (I have access to several dozen, and the naming schemes are wildly inconsistent and I don't use all of them as often as others) I can just type 'hosts' to see all their names listed.
Now, for screen. Since running screen on my local machine means I lose all my sessions when I take my laptop home for the night, and one of the great benefits of screen is having persistent sessions I don't run screen locally. Instead I log into a remote server and run screen on that server (let's call it "jumper" since it serves as a "jumping off point") and from there log into the other machines I'm working with.
I DON'T put them all in my .screenrc file for automatic login, because I don't want EVERY server EVERY time. I usually want some subset, so I have a screen session with one subset and another screen session with another screen subset.