A patch that seems to do what you want is as follows. It will apply to all sectional units, though.
The hyperref package must be loaded after the patches have been applied.
\documentclass{scrartcl}
\usepackage[rm=oldstyle]{cfr-lm} % for oldstyle figures
\usepackage{microtype}
\usepackage{xpatch}
\makeatletter
% patch the relevant commands to enclose the section title as argument to a command
\xpatchcmd{\@sect}{#8\@@par}{\lowsmallcaps{#8}\@@par}{}{}
\xpatchcmd{\@ssect}{#5\@@par}{\lowsmallcaps{#5}\@@par}{}{}
\makeatother
% \usepackage{hyperref} % Must go after the patches
\setkomafont{disposition}{\normalfont\scshape} % use small caps for section titles
\setkomafont{sectionentry}{\normalfont} % use normal font in the TOC
% make everything lower case in section titles
\newcommand\lowsmallcaps[1]{\textls{\MakeLowercase{#1}}}
\begin{document}
\tableofcontents
\section{A section With Mixed Case}
\subsection{This is small caps}
\end{document}

A different way, inspired by Sveinung's answer, is to redefine the commands; be careful that some other package didn't redefine them, because this could cause conflicts.
\documentclass{article}
\usepackage{xparse}
\usepackage{textcase,color}
\ExplSyntaxOn
\NewDocumentCommand{\changesectionalcommand}{mm}
{
\cs_new_eq:cN { csc_\cs_to_str:N #1 } #1
\RenewDocumentCommand{#1}{som}
{
\IfBooleanTF{##1}
{
\IfValueT{##2}{ \use:c { phantomsection } }
\use:c { csc_\cs_to_str:N #1 } * { #2 { ##3 } }
\IfValueT{##2}{ \addcontentsline{toc}{\cs_to_str:N #1}{##2} }
}
{
\IfNoValueTF{##2}
{
\use:c { csc_\cs_to_str:N #1 } [ ##3 ] { #2 { ##3 } }
}
{
\use:c { csc_\cs_to_str:N #1 } [ ##2 ] { #2 { ##3 } }
}
}
}
}
\NewDocumentCommand{\changesectionnumber}{mm}
{
\cs_set:cpn { @seccntformat@\cs_to_str:N #1 } { #2 }
}
\ExplSyntaxOff
\makeatletter
\renewcommand{\@seccntformat}[1]{%
\@nameuse{@seccntformat@#1}\csname the#1\endcsname\quad}%
}
\usepackage{hyperref}
\usepackage{lipsum}
\changesectionalcommand{\section}{\MakeTextUppercase}
\changesectionalcommand{\subsection}{\textcolor{red}}
\begin{document}
\tableofcontents
\section{Mixed Case}
\lipsum[2]
\subsection{Red title}
\lipsum[2]
\section[Bar]{Foo}
\lipsum[2]
\section*{Foo foo}
\lipsum[2]
\section*[Bar bar]{Foo foo foo}
\lipsum[2]
\end{document}
A feature of this redefinition is that \section*[<toc entry>]{Title} is allowed, which will automatically perform the \addcontentsline instruction. Of course, one would usually type \section*[Title]{Title}.
The syntax is
\changesectionalcommand{\seccommand}{\macro}
where \macro receives an argument and \seccommand is one of the known sectional commands (from \part to \subparagraph).
For instance, to have sections in spaced lowercase small caps, one can say
\changesectionalcommand{\section}{\lowsmallcaps}
\newcommand{\lowsmallcaps}[1]{\normalfont\scshape\textls{\MakeTextLowercase{#1}}}
(for \textls, microtype is needed).
However, also a corresponding change to the way the section number is typeset is needed, so a complement has been defined and the complete code would have also
\changesectionnumber{\section}{\normalfont}
or the section number would still be boldface, as usual.
