Bin mir nicht sicher, ob ich Dich richtig verstehe, aber ein Copy-Paste des mittels des Parsers erzeugten Textes funktioniert bei mir genauso gut wie beim übrigen Text. (Habe es zumindest mal für SumatraPDF, PDF.js und Adobe Reader getestet und konnte keinerlei Unterschied feststellen.)
In Bezug auf die eigentliche Nachfrage hast Du mich wohl falsch verstanden. Deine Lösung funktioniert super. Ich habe nur noch das Problem, wie ich sozusagen \MakeUppercase in Kombination mit hyperref verwenden kann. (Oder den Output des Parsers an hyperref übergeben kann.) Aktuell habe ich mit der Parser-Lösung in den bookmarks den Eintrag nicht in all-caps und müsste das quasi manuell eingeben. Was ich gerne erreichen würde, ist, dass ich im Dokument quasi nur noch etwas wie \specialpart{Ello, me Dearios} eingeben muss und nicht \specialpart{Ello, me Dearios}{ELLO, ME DEARIOS}. Dass also die fake-small-caps-Variante fürs toc und die all-caps-Variante für die bookmarks von den Definitionen in der Präambel bzw. Klassen-Datei erzeugt werden.
Dies ist im Prinzip ein Beispiel für die "Lösung", die ich momentan verwende:
\documentclass[headings=optiontotoc,paper=a5,10pt]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{xcolor}
\usepackage{microtype}
\usepackage{hyperref}
\usepackage{bookmark}
\linespread{1.05}
\renewcommand*{\raggedsection}{\centering}
% for centering part toc entry:
\makeatletter
\newcommand*{\specialparttocentryformat}[1]{%
\large\bfseries\sffamily%
\let\numberline@box\mbox%
\def\autodot{: }%
\centering%
#1%
}
\RedeclareSectionCommand[tocnumwidth=0pt,tocindent=0pt,tocentryformat=\specialparttocentryformat,toclinefill={},tocpagenumberbox=\@gobble,tocpagenumberwidth=0pt,tocrightindent=0pt,tocraggedpagenumber]{part}
\makeatother
\newcommand*{\up}{\large}
\newcommand*{\down}{\normalsize}
\newcommand*{\muc}[1]{\MakeUppercase{#1}}
\newcommand*{\bookonetoc}{\up E\down RSTES \up B\down UCH}
\newcommand*{\bookonetopictoc}{\up E\down LLO, ME \up D\down EARIOS}
\newcommand*{\partonetoc}{\up E\down RSTER \up T\down EIL}
\newcommand*{\partonetopictoc}{\up E\down LLO, ME \up D\down EARIOS}
\newcommand*{\dlb}{\\\vspace{\baselineskip}}% double line break
\newcommand*{\tlb}{\\\vspace{2\baselineskip}}% triple line break
\newcommand*{\lbtoc}{\texorpdfstring{\hspace{50em}}{: }}% line break in toc
\newcommand*{\dlbtoc}{\texorpdfstring{\hspace{50em}\textcolor{white}{--}\hspace{50em}}{ -- }}% double line break in toc
\begin{document}
\tableofcontents
\part[%
nonumber=true,%
tocentry={\bookonetoc\lbtoc\bookonetopictoc\dlbtoc\partonetoc\lbtoc\partonetopictoc}%
]%
{\huge\muc{Erstes Buch}\dlb\muc{Ello, me Dearios}\tlb\LARGE\muc{Erter Teil}\dlb\muc{Ello, me Dearios}}
\end{document}
(\hspace{50em} ist natürlich ein Hack. Wenn ich stattdessen \\ verwende, ist der Abstand zwischen den Zeilen nicht einheitlich. Wenn es dazu vielleicht auch gleich noch einen Tipp gibt, wie sich der Hack evtl. vermeiden lässt, wäre das natürlich super.)