Muss mich hier auch mal zu Wort melden, da meine Sache damals ja ziemlich identisch war bzw. teilweise noch ist.
Folgendes: 1.7 Mio Links bei den "404", was tun damit. Da stand ich auch, aber nicht mit 1.7 Mio, sondern "nur" mit 1.3 
Das ist einfach zu viel und das bekommt man nicht mehr wirklich geregelt. Man muss hier also Prioritäten setzen und unterscheiden zwischen "Google" und "Besucher".
Alles auf die Startseite weiterleiten: mache es nicht!
Lösungsansatz, der aus mehreren Teilen besteht:
Leite alte URLs an neue Ziele weiter, wenn das möglich ist. Aber Achtung: Leite nur eine URL an ein Ziel weiter. Also nicht 10 alte URLs an eine neue. Die Folge hier wäre nur, dass die zwar aus den "404-Fehlern" verschwinden, aber später dann in den "Soft-404-Fehlern" erscheinen.
Also, wenn weiterleiten, dann immer 1 zu 1. Das machst Du mit den wichtigsten Seiten, wenn es möglich ist.
Das war jetzt für Google und für Besucher.
Die restlichen Links, also alle, die nicht 1 zu 1 weitergeleitet werden, die bleiben als 404 stehen und werden auch entsprechend als 404 beantwortet. Lass Dir hier nicht einfallen, die auf die Startseite zu leiten, auf eine andere Seite oder gar einen 200 zu senden. Die bleiben einfach 404.
Das ist das beste, was Du für Google machen kannst! Für Besucher kannst Du hier allerdings noch etwas tun, indem Du nicht diese normale doofe 404-Seite hast, sondern was spezielles für Besucher, so dass die auch direkt wieder weiter kommen und direkt wissen was wo zu finden ist. Noch besser wäre es, wenn Du das dynamisch lösen könntest und quasi die 404-Seite dynamisch auslieferst. So könntest Du bei jedem fehlerhaften Zugriff direkt drauf reagieren und entsprechende Verweise einbinden, denen der Nutzer dann direkt folgen kann. Somit wäre das für den nur ein einziger Klick mehr und Google wäre auch "zufrieden". Hier würde es auch keine Rolle spielen, wenn der Ziellink mehrfach ist, da es eben nur ein Link auf einer 404-Seite ist und keine Weiterleitung.
Canonical: Ist auch nicht unbedingt eine gute Lösung. Es ist ohnehin schon so, dass die Nutzung freiwillig ist und oft nicht funktioniert. Bei mir zeigte sich jedoch, dass je mehr Canonical auf eine Seite verweisen, der jeweilige Canonical immer seltener beachtet wird.
Anmerkung zu 404-Fehler und Soft-404:
Die Soft-404-Fehler verschwinden nicht von alleine aus der Liste. Die verschwinden nur, wenn daraus ein echter 404 gemacht wird.
Die 404 hingegen verschwinden von selbst, wenn es ansonsten keine Verlinkungen mehr auf die Seiten gibt. Das dauert aber und kann schon im Bereich 3 Wochen bis 6 Monaten liegen. Nachhelfen kannst Du nur, indem Du die Fehler als "korrigiert" markierst, wobei das aber auf 1000 pro Tag limitiert ist. Und ja, bei 1.7 Mio Links und 1000 möglichen Markierungen am Tag, wobei Google ja auch bereits markierte teilweise wieder finden wird, ich weiß wie lange das dauert - wie gesagt, hatte das gleiche Spiel.