Ritenuto in fatto :
A.- La sera del 20 agosto 1971 A._, cittadino germanico residente ad Ascona, fu ucciso a Gordemo, frazione del Comune di Gordola. Il cadavere fu ritrovato, racchiuso in un sacco, il 19 settembre 1971 sul Monte Brè sopra Locarno. Con sentenza del 4 dicembre 1973 la Corte delle Assise criminali di Locarno stabilì che Wilhelm Geuer e Gisela Kemperdick furono i mandanti del crimine, B._ l'esecutore materiale e C._ l'intermediario.
Della causa furono in seguito investite a diverse riprese la Corte di cassazione e di revisione penale (CCRP), la quale si pronunciò con sentenze del 9 luglio 1974, 22 luglio 1976 (recte: 1977) e 18 aprile 1978, nonché il Tribunale federale, la cui Corte di cassazione penale emise due sentenze il 30 gennaio 1976 (ricorsi di diritto pubblico e per cassazione), una il 17 novembre 1977 (ricorso per cassazione) e una il 27 ottobre 1978 (ricorso per cassazione). Esauriti tutti i rimedi, ne risultarono le condanne seguenti:
- reclusione perpetua per Wilhelm Geuer e Gisela Kemperdick, riconosciuti colpevoli di correità in assassinio e mancata istigazione all'assassinio; il primo anche di appropriazione indebita; entrambi furono espulsi dalla Svizzera per 15 anni;
- 18 anni di reclusione per B._, riconosciuto colpevole di assassinio;
- 18 anni di reclusione per C._, riconosciuto colpevole di correità in assassinio, mancata istigazione all'assassinio, appropriazione indebita, correità in furto e furto.
Il 22 luglio 1980 Wilhelm Geuer e Gisela Kemperdick presentarono un'istanza di revisione, che la CCRP respinse con sentenza del 27 luglio 1982. I ricorsi di diritto pubblico e per cassazione proposti contro di essa furono respinti dal Tribunale federale, rispettivamente, l'11 e il 19 maggio 1983.
B.- Il 26 giugno 1997 Wilhelm Geuer e Gisela Geuer-Kemperdick (nel frattempo sposatisi) presentavano una nuova istanza di revisione della sentenza del 4 dicembre 1973 della Corte delle Assise criminali di Locarno e della sentenza del 9 luglio 1974 della CCRP poiché nuove dichiarazioni rilasciate da C._ proverebbero che essi non furono i mandanti dell' assassinio. La Corte di cassazione e revisione penale respingeva l'istanza con sentenza dell'8 luglio 1999.
C.- Wilhelm Geuer e Gisela Geuer-Kemperdick sono insorti con tempestivo ricorso di diritto pubblico dinanzi il Tribunale federale e chiedono, in via principale, l'annullamento della sentenza dell'8 luglio 1999 nonché l'accoglimento della loro istanza di revisione e, in via subordinata, il rinvio degli atti all'autorità cantonale per nuovo giudizio.
D.- Invitato a presentare le sue osservazioni sul gravame, il Ministero pubblico ne ha postulato l'inammissibilità e, in via subordinata, la reiezione.

Considerando in diritto :
1.-a) Il Tribunale federale esamina d'ufficio e con libero potere d'esame l'ammissibilità del rimedio esperito, senza essere vincolato, in tale ambito, dagli argomenti delle parti o dalle loro conclusioni (<ref-ruling> consid. 1a e rinvii).
b) Data la natura puramente cassatoria del ricorso di diritto pubblico, esso è ammissibile solo nella misura in cui tende all'annullamento della sentenza impugnata (<ref-ruling> consid. 5a e rinvii).
c) In virtù dell'art. 90 cpv. 1 lett. b OG, l'atto di ricorso deve contenere l'esposizione dei fatti essenziali e quella concisa dei diritti costituzionali o delle norme giuridiche che si pretendono violati; deve inoltre precisare in che consiste tale violazione. Il Tribunale federale non segue il principio "iura novit curia" e esamina soltanto le censure sufficientemente motivate; inammissibili sono anche le doglianze che si risolvono in una critica di natura meramente appellatoria (art. 90 cpv. 1 lett. b OG; <ref-ruling> consid. b e rinvii).
2.-a) Dal 1° gennaio 1996 vige nel Cantone Ticino il nuovo codice di procedura penale del 19 dicembre 1994, che ha sostituito quello del 10 luglio 1941 (vCPP). Fondandosi sul diritto transitorio, la sentenza impugnata ha dichiarato applicabile il vCPP, nella versione anteriore ad una modifica entrata in vigore il 1° luglio 1988. La domanda è quindi stata trattata secondo gli art. 243 segg. sulla revisione e gli art. 232 segg. che ne reggono la procedura in forza del rinvio dell'art. 245 cpv. 2 vCPP. I giudici cantonali hanno rilevato che l'applicazione del vecchio diritto non arrecava pregiudizio agli istanti, sia perché i titoli di revisione invocati sono rimasti invariati, sia perché la procedura seguita è in sostanza analoga a quella prescritta dal nuovo diritto; tant'è che al pubblico dibattimento i ricorrenti "hanno per finire rinunciato a contestare la procedura seguita" (sentenza impugnata, pag. 5 consid. 1).
I ricorrenti non contestano tale circostanza ma sostengono nondimeno, con un'argomentazione di difficile lettura, che i giudici cantonali avrebbero giudicato in modo sommario, alla stessa stregua di un giudice di merito, senza nemmeno procedere all'escussione di C._; essi sarebbero così incorsi in un diniego di giustizia e nell'arbitrio e avrebbero violato il principio della legalità e della parità di trattamento nonché il diritto d'essere sentito. Difatti, a loro avviso, non era consentito fare uso dell'art. 232 cpv. 1 vCPP - introdotto solamente con la modifica del 1° luglio 1988 - che permette di motivare sommariamente le decisioni (atto di ricorso, pagg. 3-9).
b) Come testé ricordato, i ricorrenti ammettono di avere rinunciato a contestare la procedura seguita dall'autorità cantonale (atto di ricorso, pag. 3): le censure formulate a questo proposito sono quindi nuove e, in virtù del principio della sussidiarietà relativa del ricorso di diritto pubblico sancito dall'art. 86 cpv. 1 OG, inammissibili (<ref-ruling> consid. 5a). Può rimanere indeciso se la rinuncia espressa al dibattimento copra anche il mancato interrogatorio di C._, del quale i ricorrenti si dolgono a più riprese. Tali censure sono difatti infondate.
È incontestato che l'assunzione di questa prova non era stata richiesta formalmente poiché i ricorrenti si erano limitati, con uno scritto del 14 novembre 1997, a ricordare all'autorità cantonale che, se avesse ritenuto di dover sentire C._, sarebbe stato opportuno farlo rapidamente, tenuto conto delle sue condizioni di salute (sentenza impugnata, pag. 30 consid. 8; atto di ricorso, pag. 4). Inoltre, i ricorrenti non spiegano, con una motivazione che rispetti i requisiti dell'art. 90 cpv. 1 lett. b OG, quale disposizione del diritto cantonale sarebbe stata manifestamente violata a questo proposito. Essi affermano al contrario che l'art. 245 cpv. 3 vCPP - norma che dà alla CCRP la possibilità di nominare un giudice relatore per esaminare i fatti e presentare un rapporto - non accenna alla facoltà di svolgere un'istruzione, la quale potrebbe semmai essere ordinata d'ufficio (atto di ricorso, pag. 4).
c) Le modifiche del vCPP entrate in vigore il 1° gennaio 1993, che la sentenza impugnata menziona di passaggio commentando le disposizioni transitorie (pag. 5 consid. 1), sono ininfluenti, perché non hanno toccato le norme sui motivi e sulla procedura di revisione.
L'art. 232 vCPP, nella versione vigente dal 1° luglio 1988, non riguarda affatto la fase istruttoria del processo: il capoverso 1 permetteva semplicemente alla Corte di cassazione e revisione penale di respingere con decisione sommariamente motivata i ricorsi (o le domande di revisione) manifestamente inammissibili o infondati, prima della notifica dell'atto alle parti interessate prescritta per gli "altri casi" dal capoverso 2. Come osserva a ragione il Ministero pubblico, è evidente che l'autorità cantonale non ha fatto uso di questa facoltà: al termine di una procedura ordinaria che i ricorrenti hanno rinunciato a contestare e durante la quale hanno avuto luogo notifiche, citazioni e dibattimento secondo l'art. 232 vCPP nella versione anteriore al 1° luglio 1988, essa ha respinto la domanda di revisione con una sentenza di trentaquattro pagine dattiloscritte.
Gli stessi ricorrenti rimproverano d'altronde alla CCRP di avere statuito alla stregua di un giudice del merito; con ciò essi riconoscono che l'autorità cantonale, semmai, ha esaminato la domanda di revisione in modo più approfondito di quanto, a loro dire, avrebbe dovuto.
d) Visto quanto precede, queste prime censure di carattere formale, nella misura in cui sono ammissibili, sono pertanto infondate. La procedura seguita, in particolare la mancata audizione di C._ e la motivazione della sentenza, non violano in modo arbitrario il diritto cantonale e non ledono il diritto d'essere sentito. Il principio della parità di trattamento non è invocato in modo pertinente. Quello della legalità, menzionato a più riprese, non ha il rango di diritto costituzionale, tranne che in alcuni campi particolari, e la sua violazione non può essere motivo di ricorso di diritto pubblico se non in relazione con altri diritti o libertà costituzionali (<ref-ruling> consid. 2b, 118 1a 137 consid. 1c).
3.- Richiamando gli art. 243 no. 3 vCPP e 397 CP, i ricorrenti sostengono che l'autorità cantonale non ha la competenza "per valutare la rilevanza di una ritrattazione [...] che sconvolge gli accertamenti della sentenza impugnata [...]"; perlomeno, "[...] non potendo essere negato un limitato potere d'esame [...], va ritenuto che la CCRP può solo pronunciarsi sulla oggettiva rilevanza del fatto nuovo invocato [...]". L'autorità cantonale avrebbe invece valutato i fatti come se fosse un giudice di merito (atto di ricorso, pagg. 7, 8 in fine, 9 e 23).
L'art. 243 n. 3 vCPP stabilisce che la revisione ha luogo quando esistono fatti o mezzi di prova rilevanti, che non erano noti al giudice penale nel primo processo. Il diritto cantonale riprende quasi letteralmente il testo dell' <ref-law>, che è del resto richiamato espressamente. La revisione è quindi subordinata alla novità e alla rilevanza del fatto o della prova. L'accertamento della novità e della rilevanza di un fatto o di un mezzo di prova costituisce una questione di fatto che dipende dall'apprezzamento delle prove (<ref-ruling> consid. 2b). Le nozioni di fatto o di mezzo di prova nuovi e rilevanti sono invece definite dal diritto federale. Anche la valutazione della pertinenza giuridica della modifica dello stato di fatto è questione di diritto (<ref-ruling> consid. 2a, 116 IV 353 consid. 2b). Se il Tribunale federale rivede il diritto nell'ambito del ricorso per cassazione, il ricorso di diritto pubblico diviene inammissibile (art. 84 cpv. 2 OG).
Le censure ricorsuali riguardano l'interpretazione della nozione di rilevanza del fatto nuovo o della prova nuova e attengono quindi al diritto. I ricorrenti non invocano disposizioni specifiche del diritto cantonale. Ne segue che, su questo tema, il ricorso di diritto pubblico è inammissibile.
4.- La domanda di revisione poggia principalmente sulla dichiarazione di C._ del 27 dicembre 1992, intitolata "Berichtigung zu meinen Aussagen im Mordfall A._", integrata dalla dichiarazione giurata del 1° settembre 1997.
a) Nel primo documento C._ dichiara che A._ fu ucciso da D._ con due colpi d'arma da fuoco nel garage dell'abitazione di B._ a Gordemo, il quale occultò il cadavere dietro compenso di fr. 100'000. --. Afferma di avere conosciuto i facoltosi cittadini germanici A._, Geuer e Kemperdick per il tramite di D._. Descrive poi le varie operazioni finanziarie e le malversazioni eseguite ai danni di A._. D._ decise di uccidere A._ quando egli pretese la sua parte di guadagno. Secondo un primo piano, A._ avrebbe dovuto essere ucciso da B._ a Freudenstadt, dove si era recato per un soggiorno di cura; il tentativo fallì, per cui D._ agì personalmente, d'intesa con C._ e B._, e fece credere che il piano fosse stato orchestrato da Geuer e Kemperdick. C._ conclude dicendo che la versione data agli inquirenti fu concordata tra lui, B._ e D._. Quest'ultimo lo minacciò di morte se avesse parlato.
Nella dichiarazione giurata del 1° settembre 1997, C._ premette di avere consegnato nel 1995 la dichiarazione di cui sopra all'avv. Franco Ferrari, con l'istruzione di farne uso soltanto una volta appurato quali sarebbero state le conseguenze della ritrattazione. In seguito conferma e precisa su alcuni punti la nuova versione dei fatti; dice espressamente che Wilhelm Geuer e Gisela Kemperdick non lo incaricarono di eliminare A._ e che essi non ebbero nulla a che vedere con l'uccisione.
b) I ricorrenti contestano la sentenza impugnata nella misura in cui ha stabilito che le due nuove dichiarazioni di C._ non sono suscettibili di modificare lo stato di fatto considerato dalla Corte delle Assise criminali. Essi rimproverano alla CCRP di essere incorsa in arbitrio e invocano il principio della presunzione d'innocenza (atto di ricorso, pagg. 9-23).
Come già rilevato, si tratta di questioni di fatto che concernono la valutazione delle prove (<ref-ruling> consid. 2a). L'autorità cantonale fruisce in questo campo di un grande potere d'apprezzamento. Per censurare un asserito accertamento arbitrario dei fatti non è sufficiente che il ricorrente critichi semplicemente la decisione impugnata o che contrapponga a quest'ultima una propria versione o valutazione; egli deve dimostrare perché l'accertamento dei fatti da lui criticato è manifestamente insostenibile o in chiaro contrasto con la situazione di fatto, si fonda su di una svista manifesta o contraddice in modo urtante il sentimento della giustizia e dell'equità. Una decisione non è arbitraria per il solo fatto che una soluzione diversa da quella adottata appaia sostenibile o persino preferibile (<ref-ruling> consid. 2a, 124 I 310 consid. 5a, 124 IV 86 consid. 2a, 123 I 1 consid. 4a e rinvii, 120 Ia 31 consid. 4b e rinvii, 118 Ia 28 consid. 1b e rinvii). Affinché sia annullata, la decisione impugnata deve risultare arbitraria nel suo risultato, non soltanto nella motivazione (<ref-ruling> consid. 5a e rinvii).
c) Nel ricorso di diritto pubblico l'apprezzamento delle prove compiuto dall'autorità cantonale è discusso e commentato diffusamente, punto per punto, come se si trattasse di un atto di appello; il gravame risulta quindi in buona parte inammissibile. Nei considerandi che seguono saranno esaminate unicamente le critiche che tendono a dimostrare con sufficiente chiarezza e precisione l'asserito arbitrio.
5.- I giudici cantonali hanno negato il carattere rilevante della ritrattazione di C._ per due ragioni.
Da un lato, essi hanno accertato che la nuova versione dei fatti posta a fondamento della domanda di revisione non è attendibile e, dall'altro, hanno stabilito che la ritrattazione non smuove gli altri indizi che continuano a gravare sui ricorrenti. Questi ultimi contestano l'intero ragionamento della CCRP. Tuttavia, per l'esito del presente giudizio è sufficiente determinare se il diniegodell'attendibilitàdellanuovaversionedeifattinonsiaarbitrario; senonloè, giàmancanoipresuppostidell'art. 397CP.
a) L'autorità cantonale ha premesso che D._ è deceduto il 29 dicembre 1987 senza mai avere ammesso la sua partecipazione al crimine (sentenza impugnata, pag. 17 e segg. consid. 7b). Questa circostanza non è contestata nel ricorso (atto di ricorso, pag. 15).
b) La CCRP ha in seguito ricordato di avere già accertato in passato, statuendo il 27 luglio 1982 sulla prima domanda di revisione, "che non soltanto B._ non risultava avere ritrattato, ma risultava avere ribadito una volta di più la versione fornita durante l'inchiesta e al dibattimento, chiedendo perfino di essere trasferito in un altro penitenziario alfine di evitare molestie"; Geuer, che già aveva offerto denaro a C._ in cambio di una ritrattazione, aveva infatti avvicinato direttamente in carcere anche B._. L'autorità cantonale ha soggiunto che le nuove prove presentate non scagionano i ricorrenti quali mandanti dell'assassinio, ma avvalorerebbero semmai l'ipotesi che fu un'altra persona a commettere il crimine.
B._ non ha del resto confermato nemmeno le altre parti della dichiarazione di C._, segnatamente né di avere tramato ai danni dei ricorrenti né che quest'altra persona uccise A._ con un'arma da fuoco e lo incaricò di nascondere il cadavere dietro un compenso in denaro consegnato alla presenza di C._ (sentenza impugnata, pagg. 18-20, consid. 7c e d). L'unica censura ammissibile, poiché non appellatoria, che i ricorrenti formulano a questo proposito consiste nell'affermare che, non avendo B._ conosciuto la coppia Geuer-Kemperdick, sarebbe arbitrario pretendere che egli potesse scagionarli (atto di ricorso, pagg. 15 e 16). L'argomento è infondato.
Nella dichiarazione del 27 dicembre 1992 C._ ha scritto che B._ non solo avrebbe occultato il cadavere, ma avrebbe partecipato sia all'elaborazione del piano per eliminare A._, sia alle discussioni che seguirono con D._ e C._ per concordare la versione dei fatti destinata agli inquirenti, che portò alla condanna dei ricorrenti; secondo C._, la concertazione sarebbe proseguita addirittura durante il carcere preventivo. In simili circostanze non è certamente insostenibile constatare, ai fini della valutazione dell' attendibilità, che la ritrattazione non trova riscontro nelle affermazioni di B._, il quale non ha mai accennato a questi fatti, ossia al complotto organizzato con D._ e C._ per incolpare i ricorrenti. Si legge anzi nella sentenza impugnata che egli "ha sconfessato la tesi delle versioni concordate, in particolare quelle del complotto a detrimento degli istanti, ammettendo ben presto nel verbale 30 settembre 1971 delle ore 19,05 di avere assassinato A._ [...]" (sentenza impugnata, consid. 7f, pag. 23 in fine). Nessuna critica è formulata contro questo accertamento.
c) Nella sentenza impugnata sono inoltre esaminate la dichiarazione di F._, suocero di D._, e la deposizione di G._, le quali, secondo i ricorrenti, proverebbero che la sera del 20 agosto 1971 A._ e D._ s'incontrarono all'insaputa di Geuer e confermerebbero quindi la nuova versione dei fatti di C._ (sentenza impugnata, consid. 7e/f, pagg. 20-24). I ricorrenti asseriscono che la CCRP avrebbe commesso arbitrio, perché avrebbe negato rilevanza a questi elementi fondandosi solo su supposizioni e sull'interpretazione dei "silenzi" di C._ (atto di ricorso, pagg. 17 e 19). Anche queste censure, nella misura in cui sono ammissibili, sono infondate.
L'autorità cantonale ha effettivamente rilevato che la dichiarazione di C._ non risponde ad alcuni interrogativi concernenti gli incontri avvenuti prima dell' assassinio ed ha formulato delle ipotesi (o "supposizioni") su come si erano verosimilmente svolti i fatti (sentenza impugnata, pagg. 21 e 22). Non ha però dato risposte definitive:
le è bastato accertare che, "sia come sia", il raffronto della ritrattazione di C._ con le affermazioni di F._ e G._ induce tutt'al più a supporre che A._ sapesse già nel pomeriggio di doversi incontrare con un suo debitore, ma "non scuote invece la sentenza impugnata nella misura in cui fa carico agli istanti - sulla scorta di altri indizi - di essere stati i mandanti dell'operazione" (sentenza impugnata, consid. 7f pag. 22). Questa constatazione è stata fondata sul fatto che la ritrattazione è perfino in contraddizione con le deposizioni di Wilhelm Geuer. C._ afferma infatti che la sera del 20 agosto 1971 partì con la propria automobile dall'abitazione di Geuer insieme con D._ e A._; Geuer aveva invece dichiarato agli inquirenti "con insistenza" di avere portato A._ a casa sua, dove era presente anche C._, e che A._ se n'era andato tutto solo, dopo che fu chiamato al citofono, mentre C._ era rimasto ancora una decina di minuti, poi era partito anch'egli solo, in automobile, in direzione di Via San Gottardo (sentenza impugnata, pagg. 21-23).
Contro questa parte determinante della motivazione, che è basata su accertamenti di fatto riferiti agli atti, non su "supposizioni", i ricorrenti non formulano critiche precise. Ammettono addirittura che "la descrizione dei fatti così come risulta dai verbali non è univoca", che "una rievocazione dei fatti troppo precisa da parte di C._ sarebbe stata ritenuta sospetta"; obiettano semplicemente che egli dev'essere creduto come lo fu nel 1973 e, più avanti, riconoscono che egli "ha fatto più dichiarazioni contraddittorie" (atto di ricorso, pagg. 17, 18 e 21).
d) Al termine delle considerazioni concernenti l'esame della ritrattazione di C._ l'autorità cantonale ha evidenziato altri elementi che concorrono a metterne in dubbio l'attendibilità: le numerose versioni dei fatti date a suo tempo agli inquirenti; la smentita del complotto da parte di B._; la contraddizione sul modo d'uccisione di A._; il ritardo con il quale C._ ha ritrattato nonostante che D._ fosse morto nel 1987 (sentenza impugnata, pagg. 23 e 24).
I ricorrenti commentano queste considerazioni in modo appellatorio (atto di ricorso, pag. 18). Su di un solo argomento contenuto nella sentenza impugnata è necessario soffermarsi: quello con il quale l'autorità cantonale rileva la contraddizione del comportamento di C._, che afferma oggi che D._ doveva rimanere fuori dall'inchiesta, ma lo aveva allora subito chiamato in causa. A questo proposito i ricorrenti sostengono che i giudici cantonali avrebbero commesso un errore, perché la polizia apprese il coinvolgimento di D._ da H._ il 5 ottobre 1971, mentre C._ fu interrogato soltanto l'8 ottobre 1971. La censura è tuttavia infondata: sfugge infatti ai ricorrenti che, secondo la sentenza impugnata, C._ fece il nome di D._ già nei verbali, rispettivamente, del 21 e 30 settembre 1971, e non solo l'8 ottobre 1971.
6.- Per le ragioni che precedono i ricorrenti non dimostrano che la sentenza della Corte di cassazione e di revisione penale sia arbitraria, in particolare per quanto concerne la negata rilevanza della ritrattazione di C._. Ciò è sufficiente per respingere le loro censure.
7.- Per quanto riguarda la pretesa violazione dei principi della presunzione di innocenza e "in dubio pro reo", va ricordato che questi ultimi non si applicano al caso in esame, in quanto la procedura di revisione è diretta contro un giudizio di colpevolezza cresciuto in giudicato (<ref-ruling> consid. 3b e rinvii).
8.- Il gravame, nella misura in cui è ammissibile, risulta pertanto infondato. Le spese vanno poste a carico dei ricorrenti soccombenti (art. 156 cpv. 1 e 153a OG).

Per questi motivi
il Tribunale federale
pronuncia :
1. Nella misura in cui è ammissibile, il ricorso di diritto pubblico è respinto.
2. La tassa di giustizia di fr. 2'000. -- è posta a carico dei ricorrenti, in solido.
3. Comunicazione al patrocinatore dei ricorrenti, alla Corte di cassazione e di revisione penale del Tribunale d'appello e al Ministero pubblico del Cantone Ticino.