Man muss dazu eigentlich nur in die Verzeichniseinträge einen Anker einschleusen und in die Ausgabe der Überschriften den Sprung zu diesem Anker.
Die Anker kann man bei KOMA-Script auf zwei Arten einschleusen: Entweder man deklariert den Verzeichnisstil der einzelnen Einträge über \DeclareTOCStyleEntry oder \RedeclareSectionCommands um (theoretisch kann man dazu auch zunächst einen neuen Stil definieren, der die Anker direkt erzeugt) oder man nimmt über \addtocentrydefault Einfluss darauf, was in das Inhaltsverzeichnis geschrieben wird. Dabei muss man aber beachten, dass
hyperref diese Texte davon auch für die Bookmaarks verwendet, also ggf. hier zusätzlich mit \textorpdfstring gearbeitet werden sollte.
Den Sprung zum Anker kann man einfach in die Ausgabe der Überschriften \sectionnlinesformat und \sectioncatchphraseformat einfügen.
Um fortlaufende Anker zu erzeugen böte sich theoretisch der Zähler der jeweiligen Gliederungsebene an. Allerdings funktioniert das dann nur für nummerierte Überschriften. Besser ist daher, einen eigenen Zähler zu verwenden. Dann funktioniert es auch für nicht nummerierte Überschriften.
\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage{xpatch}
\usepackage{hyperref}
\newcounter{tocentrynumber}
\xpatchcmd{\addtocentrydefault}{#3}{%
\texorpdfstring{\protect\hypertarget{tocentry.\thetocentrynumber}{#3}}{#3}%
}{}{\undefined}
\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
\stepcounter{tocentrynumber}%
\hyperlink{tocentry.\thetocentrynumber}{\@hangfrom{\hskip #2#3}{#4}}%
}
\makeatother
\renewcommand*{\sectioncatchphraseformat}[4]{%
\stepcounter{tocentrynumber}%
\hyperlink{tocentry.\thetocentrynumber}{\hskip #2#3#4}%
}
\begin{document}
\tableofcontents
\section{Erstens}
\Blindtext
\section{Zweitens}
\Blindtext
\section{Drittens}
\Blindtext
\addsec{Nichtnummeriertens}
\Blindtext
\blinddocument
\blinddocument
\blinddocument
\blinddocument
\end{document}
Zu beachten ist allerdings, dass diverse Pakete leider nicht \addsectiontocentry o. ä. und damit auch nicht \addtocentrydefault verwenden, um eigene Einträge im Inhaltsverzeichnis vorzunehmen. Das ist dann aber ein Problem dieser Pakete. Wollte man hier eingreifen müsste man in der Tat den Verzeichnisstil der Einträge manipulieren (siehe Hinweis oben) oder direkt \addcontentsline oder sogar \addtocontents umdefinieren.