There are options to include spin-orbit coupling in DFT. In general, there are two ways to do it:
- Solve Dirac's relativistic equation for the electrons
- Incorporate relativistic effects through the Pseudopotential
Most DFT codes employ (2) as it is easier. There are well tested and readily available 'fully-relativistic' pseudopotentials for LDA and GGA available now.
Regarding the second part of the question, it depends on what you want to calculate. KS-DFT for example, cannot predict optical properties faithfully since it is a strictly ground-state method. In fact, the accuracy of DFT is more nuanced than you think - It depends on a variety of factors including the exchange functional used. One functional is not unequivocally better than another - Check this post for a comparison of LDA vs GGA in the context of elastic constants. Another example I can think of is in the context of highly-correlated materials. Kohn-Sham DFT predicts some transition-metal oxides such as FeO and ZnO incorrectly as metals. The inclusion of a modest Hubbard 'U' faithfully treats the highly localized 'd' orbitals in these materials, opening up a band gap. The properties predicted in this 'LDA(or GGA)+U' scheme are found to agree well with experiments.
The most commonly used exchange functionals such as LDA and GGA are very well known to underestimate electronic band gap due to a spurious self-interaction in partially occupied orbitals that is not exactly cancelled out by the terms in the exchange correlation functional. This causes occupied bands to over-delocalize, and push them up in energy, hence reducing band gap. To get an accurate band gap, you would need to do the actual quasiparticle calculation - via the GW-BSE method. However, various 'hybrid' functionals have been developed in the past years to give a more reliable estimate of the band gap. However these methods are semi-empirical, and hence strictly speaking, you don't know what band gap it gives you.