Even with the GetDataDir() cached system, a function call is overkill for the vast majority of uses in the code. The values are static once the program is initialized, so initialize pathDataDir once.
GetDataDir() is renamed to GetPrepDataDir() to better indicate that it has side effects.
Curious to see whether people think this is worth merging or not. I think it cleans up the code, and is ever so slightly more CPU efficient for most use cases.