Earlier quoted context omitted.
Clients could have easily done this before. HEAD /2Mp91y HTTP/1.1 Host: bit.ly ... Status: HTTP/1.1 301 Moved Location: http://news.ycombinator.com/ If the goal was minimizing requests, Twitter could've saved the endpoint on its end and passed the data through the API. A new shortener was unnecessary, though it's easy to see why it is desirable for them.
Querying each URL would be impractical to do on the Twitter client side, especially on a mobile device, even simply from the latency before you can render perspective. You could render the tweets with the shortened links and then reflow the text if/when each HEAD request returns, but that would probably result in a crummy, slow experience for the reader as they scroll through tweets. Twitter could indeed have done it…
The middle man will not be skipped. It will be wrapped. Two redirects instead of one.