Dean Carrano used the following formula per 108 chances on the batting card to generate runs created:
(TB * .318) + ((BB+HBP-CS-GIDP) * .333) + (H * .25) + (SB * .2) - (AB * .085)
He then formulated defensive runs saved or given up for every defensive position per 108 ar-bats (except for catcher). So you could compare two players using those calculations. You can google his article by looking for Strat defensive ratings or similar.
If you play ATG 8 or 9 you can go to diamonddope.com and they have runs created for every player for every park. Quite a useful tool. Then, of course, you could use Carrano's defensive ratings to compare players' total values.
In fact, on ATG 9 I do use those run created tools extensively to try to craft my teams. On 20XX it's not quite as scientific to be honest. I have the ratings guide which I can eyeball and tell what players are good fits for different types of park. I just do not have the time or inclination to run excel calculations for every park for every player. I just use a gestalt method...
Diamondddope is awesome and gives ATG 9 an advantage over 20XX, but for whatever reason I still like 20XX better.
And I am not averse to looking at stats history to see how players have done in the actual game.