Nach seiner Zeit bei den St. Catharines Falcons, wurde der in St. Catharines aufgewachsene Hamilton 2009 bei der OHL Priority Selection an 27. Stelle von den Niagara IceDogs ausgewählt. In seinem ersten Jahr bei den IceDogs in der Ontario Hockey League wurde er ins Second All-Rookie-Team berufen. In der Saison 2010/11, in der er mit seinem Team das Eastern-Conference-Finale erreichte, war er mit 58 Scorerpunkten punktbester Verteidiger seines Teams und viertbester Verteidiger der OHL.[1] Hamilton wurde daraufhin 2011 mit der Bobby Smith Trophy und dem CHL Scholastic Player of the Year Award ausgezeichnet.
Beim NHL Entry Draft 2011 wurde Hamilton an neunter Stelle von den Boston Bruins ausgewählt. Im Dezember 2011 unterzeichnete er einen dreijährigen Einstiegsvertrag bei den Bruins. Im Januar 2013 kam er beim 3:1-Erfolg gegen die New York Rangers zu seinem NHL-Debüt und stand bis zum Ende der Saison noch in 49 Spielen für Boston auf dem Eis.
Im Vorfeld des NHL Entry Draft 2015 wurde Hamilton von den Boston Bruins an die Calgary Flames abgegeben. Im Gegenzug erhielten die Bruins ein Erstrunden- sowie zwei Zweitrunden-Wahlrechte für diesen Draft. In Calgary war er in der Folge drei Jahre aktiv, bevor er im Juni 2018 samt Micheal Ferland und Adam Fox zu den Carolina Hurricanes transferiert wurde, die dafür Noah Hanifin und Elias Lindholm zu den Flames schickten.[2] Am Ende der Saison 2020/21, in der ihm 42 Punkte in 55 Partien gelangen, wurde er ins NHL Second All-Star Team gewählt.
Dennoch gelang es beiden Parteien nicht, sich anschließend auf einen neuen Vertrag in Carolina zu einigen, sodass er im Juli 2021 als Free Agent zu den New Jersey Devils wechselte. Dort unterzeichnete er einen neuen Siebenjahresvertrag, der ihm ein durchschnittliches Jahresgehalt von neun Millionen US-Dollar einbringen soll. Im Trikot der Devils verzeichnete er in der Saison 2022/23 mit 74 Punkten aus 82 Partien seine bisher beste Offensivstatistik, bevor er von der folgenden Spielzeit 2023/24 den Großteil verletzungsbedingt verpasste.
(Legende zur Spielerstatistik: Sp oder GP = absolvierte Spiele; T oder G = erzielte Tore; V oder A = erzielte Assists; Pkt oder Pts = erzielte Scorerpunkte; SM oder PIM = erhaltene Strafminuten; +/− = Plus/Minus-Bilanz; PP = erzielte Überzahltore; SH = erzielte Unterzahltore; GW = erzielte Siegtore; 1Play-downs/Relegation; Kursiv: Statistik nicht vollständig)