I've heard that what prevents the fastest computers from almost always dominating pools is that each miner is hashing different data because of the generation transaction. However, if I solo mine with many of my own computers running miners connecting to a bitcoind I'm running, it seems like I'm going to redo the same work across all miners because the generation transaction address would be the same. Or should each miner have its own address? Or should bitcoind generate a new address for each getwork request?
Bitcoind will of course give different data to each of the miners connecting to it. Otherwise using multiple miners would be pointless.
It needn't necessarily give a different address (though normally it does) - it's enough to change the extraNonce field.
It really does not matter. The nature of mining is random. Whether you will use different addresses or the same one, your hashing will be different from the other people's hashing. As long as an identical work is not assigned to two people (both in term of nonces and merkle root), the results will be the same.