Bare soil and urban areas are notoriously hard to segregate. Even with a perfect atmospheric correction, there will be relatively high confusion between the two, particularly when limited to multispectral datasets.
The atmospheric correction technique you are doing is a simple dark object subtraction, wherein the darkest objects in the landscape should have a DN value of 0. You subtract that value from all pixels in the image to effectively remove the atmospheric scattering which is assumed to be represented by the difference between 0 and your lowest DN value. More on this here.
Given this, it is based on the spectral bands themselves, and not necessarily the vegetation indices (which are indexes rather than spectral responses) that you list. So, yes, atmospheric correction is necessary for all indices, not necessarily just vegetation-related ones.
If you feel that your particular atmospheric correction is ineffective, there are others that you can try applying. They vary in complexity and likely accuracy of correction. An appropriate approach to your task at hand would be to set up an objective means of whether a particular method is resulting in better classification of soil vs. urban pixels, and try out a few atmospheric correction techniques to see what provides the best results.
A nice paper on when and how to apply atmospheric correction to LANDSAT data can be found here.
If you dig into the paper I linked to, you'll learn that atmospheric corrections are most important for when you need spectral signatures to be consistent in absolute terms over time.
In short, atmospheric conditions change over time, and thus if you have two different images that you are using to compare some change in the landscape, you need to account for the atmospheric conditions to make sure that a change in a pixel's DN value is actually representative of changes in its spectral signature... and not atmospheric conditions.
Given this information, you should be able to determine whether or not you need atmospheric correction for your particular case!