From a perspective of generating collisions, it appears that many of the steps outlined in https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses do not need to be computed by any would be attacker.
For any address which has spent an input, the ECDSA public key is in the block chain, rendering steps 2-9 unneeded to check for a collision.
For any address which has not spent any inputs, the RIPEMD-160(SHA-256(publickey)) is available in the blockchain, rendering steps 4-9 unneeded to check for a collision.
Thus, what purpose do steps 4 through 9 of the address generation serve? Why not simply BASE58(0x00 RIPEMD-160(SHA256(publickey)))?