Fatti: A. A.a. A._ SA è una società anonima avente come scopo statutario la compera, la vendita, la costruzione, la locazione e la gestione di beni mobiliari e immobiliari; la prestazione di servizi per l'edilizia, ed in particolare la gestione, consulenza, direzione lavori, coordinamento e controllo economico-finanziario di progetti immobiliari; la partecipazione a imprese commerciali, industriali, immobiliari; lo svolgimento di operazioni finanziarie (con esclusione di pubblica raccolta di depositi di capitale); l'assunzione di incarichi fiduciari. B._ è l'unico membro del Consiglio di amministrazione della società. Con decisioni su opposizione del 6, rispettivamente 23 febbraio 2017, la Cassa di compensazione AVS/AI/IPG del Cantone Ticino (di seguito Cassa) ha fissato a fr. 935'000.- la retribuzione di B._ soggetta ai contributi sociali per l'attività svolta per A._ SA in qualità di dipendente per il periodo 2012 - 2015. Con giudizio del 22 giugno 2017 il Tribunale delle assicurazioni del Cantone Ticino ha respinto il ricorso inoltrato da A._ SA e B._, i quali asserivano che il lavoro prestato da B._ fosse di natura indipendente. Con sentenza del 12 aprile 2018 (9C_538/2017) il Tribunale federale ha tuttavia annullato questo giudizio e rinviato la causa ai giudici cantonali affinché completassero l'istruttoria e rendessero una nuova decisione. In sostanza, il Tribunale federale ha ritenuto che per stabilire se l'attività svolta da B._ per A._ SA dal 2013 al 2015 fosse di carattere dipendente o indipendente si dovevano dapprima accertare i rapporti giuridici tra i due soggetti. In particolare era necessario riesaminare se vi era un rapporto di subordinazione tra B._ e la società, quale era il rischio economico assunto dalle parti, quale era l'organizzazione del lavoro fornito da B._, la natura dei debiti contratti per finanziare il progetto immobiliare e quella degli investimenti assunti dalle parti. A.b. Dando seguito alla sentenza del Tribunale federale, su richiesta del Tribunale cantonale, gli interessati hanno prodotto il 22 giugno 2018 una presa di posizione con allegata la relativa documentazione. Dopo avere dato alla Cassa la possibilità di pronunciarsi, con giudizio del 23 luglio 2018, il Tribunale cantonale ha accolto parzialmente i ricorsi e riformato le decisioni di tassazione nel senso che il reddito da attività dipendente di B._ per A._ SA era di fr. 885'000.-, pari a fr. 205'000.- nel 2013, fr. 340'000.- nel 2014 e fr. 340'000.- nel 2015. L'attività dipendente era circoscritta al lavoro svolto da B._ per A._ SA per il progetto "X._" dal 2013 al 2015. Il Tribunale cantonale ha quindi rinviato la causa alla Cassa per nuovo calcolo dei contributi sociali. A.c. Adito su ricorso da B._ e A._ SA, il Tribunale federale lo ha dichiarato inammissibile con sentenza del 12 ottobre 2018 (9C_584/2018), dopo avere appurato che il giudizio del 23 luglio 2018 costituiva una decisione incidentale e che i presupposti per impugnarlo immediatamente non erano adempiuti. A.d. Con due distinte decisioni su opposizione del 7 gennaio 2019 la Cassa ha respinto l'opposizione di A._ SA e di B._ concernente le decisioni che fissavano i contributi sociali dovuti dal datore di lavoro. B. B._ e A._ SA hanno inoltrato un nuovo ricorso presso il Tribunale cantonale chiedendo l'annullamento delle decisioni di tassazione. Con giudizio del 21 marzo 2019 il Tribunale cantonale ha respinto il ricorso. C. Il 24 aprile 2019 B._ e A._ SA presentano un ricorso in materia di diritto pubblico al Tribunale federale postulando l'annullamento dei giudizi del 23 luglio 2018 e 21 marzo 2019, nonché delle decisioni su opposizione del 7 gennaio 2019. La Cassa postula la reiezione del gravame e l'Ufficio federale delle assicurazioni sociali rinuncia a determinarsi.