Der folgende `expl3` Code definiert `\usepackage` um, sodass die Namen aller Pakete, die über `\usepackage` geladen werden sollen, sowie alle sukzessive gegebenen Optionen, gespeichert werden. Im `\AtBeginDocument` Hook werden die Pakete dann tatsächlich geladen. (Bitte diesen Code nicht benutzen! Der "Option clash" hat schon seine Daseinsberechtigung. Das hier ist nur "Proof of Concept")
    \documentclass{article}
    \usepackage{xparse}
    \ExplSyntaxOn
    \cs_generate_variant:Nn \str_case:nnTF { nV }
    \tl_new:N \g_felix_packages_tl
    \seq_new:N \g_felix_packages_seq
    
    \cs_set_eq:NN \felix_saveusepackage:w \usepackage
    
    \cs_new_protected:Npn \felix_usepackage:vn \felix_usepackage:nn #1#2
     {
      \exp_after:wN \felix_saveusepackage:w
       \exp_after:wN \felix_saveusepackage:w [ \cs:w #1 \cs_end: ] { #2 }
     }
    \cs_generate_variant:Nn \felix_usepackage:nn { vn }
    
    \cs_new_protected:Npn \felix_addpackage:nn #1#2
     {
      \str_case:nVTF { #2 } \g_felix_packages_tl
       {
        \tl_gput_right:cn { g_felix_#2_tl } { #1, }
       }
       {
        \tl_new:c { g_felix_#2_tl }
        \tl_gput_right:cn { g_felix_#2_tl } { #1, }
        \tl_gput_right:Nn \g_felix_packages_tl { {#2}{} }
        \seq_gput_right:Nn \g_felix_packages_seq { #2 }
       }
     }
    
    \cs_new_protected:Npn \felix_loadpackages:
     {
      \seq_map_inline:Nn \g_felix_packages_seq
       {
        \felix_usepackage:vn { g_felix_##1_tl } { ##1 }
       }
     }
    
    \RenewDocumentCommand \usepackage { O{} m }
     {
      \felix_addpackage:nn { #1 } { #2 }
     }
    
    \AtBeginDocument
     {
      \felix_loadpackages:
     }
    \ExplSyntaxOff
    \usepackage{xcolor}
    \usepackage[dvipsnames]{xcolor}
    \usepackage[breaklinks]{hyperref}
    \usepackage[unicode]{hyperref}
    \begin{document}
    \end{document}
---
Wer sich mit `expl3` auskennt kann mir vielleicht sagen, wie ich diese Zeile verbessern kann:
    \exp_after:wN \felix_saveusepackage:w
     \exp_after:wN [ \cs:w #1 \cs_end: ] { #2 }\end{document}