
While BGP is a fine way to route packets, it's a horrid way to select paths for connections.
Either this statement is confused, I am, or both. BGP is one way to get data into forwarding tables so that forwarding engines can route packets. As you go on to knock BGP for how it makes path decisions, the above sentence becomes indigestible.
BGP has proven to be a reasonable gross estimator of instantaneous reachability. It is not a good way to decide which of several mirrored web servers a client should use, but it is a fine way to determine which paths should be used for the TCP segments between client and server once some other means has been employed to select a best server. <<Semi-catty comment about Cisco's DistributedDirector elided.>>
But anyway, the underlying problem is that BGP concentrates on policy, while good IGPs concentrate on efficient use of paths. An underlying assumption may have been that ASx can/should not know the internals of ASy.
The way I think of this is that BGP describes reachability, and clients need to know about topology in order to select the right web server, and these two (reachability and topology) are necessarily unrelated to each other.