Faits :
A.
A._ est titulaire d'un permis de conduire catégorie B depuis le 22 mai 2000. Il a fait l'objet d'un retrait de permis de conduire d'une durée d'un mois, ordonné le 1er février 2012, pour refus de la priorité à un vélo et accident.
Durant la nuit du 23 novembre 2012, A._ circulait au volant de son véhicule automobile de Anet, dans le canton de Berne, en direction de Montilier, dans le canton de Fribourg. Une patrouille de la police cantonale bernoise en civil, équipée d'un cinémomètre vidéo, a constaté qu'il conduisait à une vitesse de 116 km/h sur la Murtenstrasse dans le canton de Berne, tronçon limité à 80 km/h. Les agents ont voulu l'arrêter au croisement en direction de Montilier, mais A._ a accéléré. Ils ont alors enclenché une nouvelle fois leur dispositif et ont mesuré une vitesse de 130 km/h à Sugiez, dans le canton de Fribourg, tronçon également limité à 80 km/h. A._ a finalement été interpellé par la police sur un parking à Morat.
Par courrier du 25 janvier 2013, la Commission des mesures administratives en matière de circulation routière du canton de Fribourg (ci-après; la CMA) a avisé l'intéressé de l'ouverture d'une procédure en lui signalant que les infractions du 23 novembre 2012 pourraient donner lieu au prononcé d'une mesure administrative. Sur requête de l'intéressé, la CMA a suspendu la procédure administrative jusqu'à droit connu sur le plan pénal.
Par ordonnance pénale du 26 septembre 2014, le Ministère public du canton de Fribourg a reconnu A._ coupable de violation simple et de violation grave des règles de la circulation routière (excès de vitesse) et l'a condamné à une peine pécuniaire de 30 jours amende à 220 fr. avec sursis pendant deux ans ainsi qu'à une amende de 1'600 fr. Par jugement du 21 juillet 2015 (notifié le 30 mai 2017), la Juge de police de l'arrondissement du Lac a reconnu le prévenu coupable des mêmes infractions et l'a condamné à une peine pécuniaire de 20 jours amende à 130 fr. avec sursis pendant deux ans, à une amende de 1'000 fr. et au paiement des frais de procédure. Par arrêt du 7 mars 2018, le Tribunal cantonal du canton de Fribourg a partiellement admis l'appel interjeté par l'intéressé et réduit sa peine de moitié, comme proposé par le Ministère public. La cour cantonale n'a pas remis en question la gravité de la faute, mais a retenu que, compte tenu de la difficulté relative de l'affaire, un délai de près de deux ans pour rendre un jugement motivé violait le principe de célérité. Il ne s'agissait toutefois pas d'un cas extrême justifiant une exemption de peine sur le fond (arrêt TC FR 501 2017, 106 du 7 mars 2018, consid. 6.3). Ce jugement n'a pas été contesté.
Le 13 septembre 2018, la procédure administrative a repris son cours et, par écrit du 17 septembre 2018, A._ a conclu principalement à la renonciation à toute sanction et, subsidiairement, au prononcé d'un avertissement. Par décision du 26 septembre 2018, se fondant sur l'état de fait établi par l'autorité pénale, la CMA a prononcé le retrait du permis de conduire de A._ pour une durée de 6 mois, en vertu de l'<ref-law>. Sur recours, la IIIe Cour administrative du Tribunal cantonal du canton de Fribourg a confirmé la décision de la CMA, par arrêt du 7 mars 2019.
B.
A._ forme un recours en matière de droit public ainsi qu'un recours constitutionnel subsidiaire par lesquels il demande principalement au Tribunal fédéral d'annuler l'arrêt du 7 mars 2019 et de renoncer au prononcé de toute sanction à son encontre. Il conclut subsidiairement au prononcé d'un avertissement.
Invités à se déterminer, le Tribunal cantonal se réfère à son arrêt et l'Office fédéral des routes conclut au rejet du recours.
Par ordonnance présidentielle du 22 mai 2019, la requête d'effet suspensif a été admise.

Considérant en droit :
1.
Le recourant a formé, en un seul acte (<ref-law>), un recours en matière de droit public et un recours constitutionnel subsidiaire. Dirigé contre une décision finale (<ref-law>) prise en dernière instance cantonale (art. 86 al. 1 let. d LTF) au sujet de mesures administratives de retrait du permis de conduire (<ref-law>), le recours est en principe recevable comme recours en matière de droit public selon les art. 82 et ss LTF, aucune des exceptions prévues à l'<ref-law> n'étant réalisée. Déposé en temps utile (<ref-law>) et en la forme prévue (<ref-law>) par le destinataire de l'arrêt attaqué qui a un intérêt digne de protection à l'annulation ou à la modification de celui-ci (<ref-law>), le présent recours est recevable.
La voie du recours en matière de droit public étant ouverte, le recours constitutionnel subsidiaire est irrecevable (<ref-law>).
2.
Le recourant ne conteste ni les faits, ni leur qualification juridique, à savoir l'existence d'une faute légère et d'une faute grave au sens des <ref-law> et 16c al. 1 let. a LCR. Il reproche toutefois à la cour cantonale de n'avoir pas retenu une violation grave du principe de la célérité. Il se plaint aussi à cet égard d'une violation du principe de la proportionnalité. Il met en exergue les six ans qui se sont écoulés entre le comportement reproché et l'arrêt cantonal et, par voie de conséquence, la perte de l'effet éducatif de la mesure. Il soutient qu'il doit être renoncé au retrait du permis, compte tenu de la durée excessive de la procédure exclusivement due aux faits des autorités, de l'enjeu particulièrement important pour lui (il effectue quotidiennement 150 km pour se rendre sur son lieu de travail) et de son attitude très correcte (faits reconnus et aucune infraction à la LCR ces sept dernières années).
2.1. L'art. 29 al. 1 Cst. garantit à toute personne, dans une procédure judiciaire ou administrative, le droit à ce que sa cause soit traitée dans un délai raisonnable. Cette disposition consacre le principe de célérité ou, en d'autres termes, prohibe le retard injustifié à statuer. L'autorité viole cette garantie constitutionnelle lorsqu'elle ne rend pas la décision qu'il lui incombe de prendre dans le délai prescrit par la loi ou dans un délai que la nature de l'affaire ainsi que toutes les autres circonstances font apparaître comme raisonnable. Le caractère raisonnable du délai s'apprécie selon les circonstances particulières de la cause, eu égard notamment à la complexité de l'affaire, à l'enjeu du litige pour l'intéressé, à son comportement ainsi qu'à celui des autorités compétentes (<ref-ruling> consid. 1.3.1 p. 377).
En matière de circulation routière, la durée minimale du retrait de permis de conduire ne peut en principe pas être abaissée en raison d'une violation du droit d'être jugé dans un délai raisonnable ancré aux art. 29 al. 1 Cst. et 6 par. 1 CEDH (<ref-ruling> consid. 2.2 p. 336). Le Tribunal fédéral a toutefois réservé les cas où cette durée était gravement dépassée, de sorte que la mesure de retrait aurait perdu tout effet éducatif ou d'amendement (<ref-ruling> consid. 2.3 p. 336). Si la violation du principe de célérité a été constatée à plusieurs reprises dans la jurisprudence, il n'en a pas moins été retenu que, même dans l'hypothèse d'une durée jugée contraire au principe de célérité - en l'occurrence de 9 ans et 3 mois -, elle ne pesait pas d'un poids important au point de justifier exceptionnellement de renoncer au retrait du permis de conduire (arrêt 1C_190/2018 du 21 août 2018 consid. 5.1).
2.2. En l'espèce, le Tribunal cantonal a d'abord retenu que la durée du retrait avait été fixée au minimum légal de six mois, prévu pour l'infraction commise (cf. <ref-law> et 16c al. 2 let. a LCR) et ne pouvait en principe être abaissée en raison d'une violation du droit d'être jugé dans un délai raisonnable.
Si une violation du principe de la célérité a été reconnue pour la procédure pénale, la procédure administrative a quant à elle été menée sans retard après le jugement pénal du 7 mars 2018 (contrairement aux affaires 1C_190/2018 du 21 août 2018 et 1C_192/2013 du 9 janvier 2014, dans lesquelles la procédure administrative n'avait pas été menée avec célérité). La CMA a en effet rendu sa décision cinq mois et demi après l'entrée en force du jugement pénal. S'ajoute à cela que le recourant a lui-même demandé la suspension de la procédure administrative jusqu'à droit connu sur le plan pénal. Cela n'empêche pas que la durée totale de la procédure - depuis les faits incriminés jusqu'à l'arrêt du Tribunal fédéral - s'élève à un peu moins de sept ans. Une telle durée contrevient au principe de la célérité.
Se pose ensuite la question de savoir si le principe de la célérité a été violé de manière si grave que la mesure de retrait de permis aurait perdu tout effet éducatif ou d'amendement. Avec le Tribunal cantonal, il y a lieu de constater que la durée de la procédure jusqu'à la décision administrative est inférieure à six ans (23 novembre 2012 - 26 septembre 2018) et ne dépasse pas les limites temporelles exposées dans la jurisprudence du Tribunal fédéral. S'y ajoute que la CMA a statué rapidement après avoir eu connaissance de l'arrêt du Tribunal cantonal en matière pénale. Par ailleurs, il ressort du jugement pénal qu'il ne s'agissait pas d'un cas extrême justifiant une exemption de peine, «tant s'en faut». La violation du principe de la célérité ne peut ainsi pas être qualifiée de grave, au point d'impliquer la renonciation à toute sanction. L'effet dissuasif de la mesure paraît toujours d'actualité. En d'autres termes, l'exécution de la mesure prévue par la loi n'est pas dénuée d'effet éducatif, malgré la durée de la procédure.
3.
Il s'ensuit que le recours est rejeté, aux frais du recourant qui succombe (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours constitutionnel subsidiaire est irrecevable.
2.
Le recours en matière de droit public est rejeté.
3.
Les frais judiciaires, arrêtés à 3'000 francs, sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué au mandataire du recourant, à la Commission des mesures administratives en matière de circulation routière de l'Etat de Fribourg, au Tribunal cantonal de l'Etat de Fribourg, IIIe Cour administrative, et à l'Office fédéral des routes.
Lausanne, le 2 octobre 2019
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président : Chaix
La Greffière : Tornay Schaller