Faits :
A.
A.a. B._, née en 1958, est associée gérante présidente de C._ Sàrl, dont le but social est la diffusion de bijoux et accessoires de mode, les activités de holding et l'acquisition, la gestion ou la vente de tout bien mobilier ou immobilier. En 2009, année de son inscription au registre du commerce du canton de Neuchâtel, cette société a été affiliée en tant qu'employeur auprès de la Caisse cantonale neuchâteloise de compensation (ci-après: la caisse), même si elle n'occupait pas de personnel.
A._, né en 1954, époux de B._, a travaillé jusqu'en 2014 à 50 % au service de D._. En 2015, il a fait inscrire la raison individuelle E._ au registre du commerce, dont le but social était l'accompagnement et le soutien de personnes en difficulté psychique et de leurs proches, ainsi que la formation dans ce domaine. Compte tenu de cette activité initiée en novembre 2015, la caisse a procédé à son affiliation en qualité de personne de condition indépendante à titre principal, avec effet au 1er novembre 2015. La raison individuelle E._ a été radiée par suite de cessation de l'exploitation, le 1er octobre 2019.
A.b. Par décisions des 12 juin 2018 et 25 février 2019, la caisse a fixé les cotisations salariales dues par C._ Sàrl sur les rémunérations annuelles versées respectivement en 2017 et en 2018 à B._.
Par quatre décisions du 14 juin 2018, la caisse a fixé les cotisations personnelles de A._ en tant que personne exerçant une activité lucrative à titre principal pour les années 2015, 2016, 2017 et 2018. Elle a aussi rendu trois décisions portant sur les intérêts rémunératoires pour les années 2015, 2016 et 2017.
A.c. Par décisions du 21 mai 2019, la caisse a fixé à nouveau les cotisations du prénommé pour les années 2015 à 2018 ainsi que les cotisations 2019, en lui reconnaissant cette fois le statut de personne exerçant une activité lucrative à titre accessoire, les cotisations étant fixées à zéro franc. Le 21 mai 2019, la caisse a également rendu quatre décisions relatives aux intérêts rémunératoires pour les années 2015 à 2018.
Le 22 mai 2019, la caisse a fait savoir à A._ qu'elle avait constaté qu'il ne réalisait plus de revenu indépendant depuis plusieurs années. Elle devait ainsi le considérer comme non-actif dès lors que les cotisations relatives au revenu de l'activité lucrative étaient inférieures à la moitié des cotisations dont il devrait s'acquitter en tant que non-actif. A la même date, la caisse a notifié séparément à chacun des époux A._ et B._ six décisions de cotisations personnelles pour personnes sans activité lucrative pour les années 2014 à 2019, remplaçant toutes les décisions antérieures pour cette période. Le 28 juin 2019, la caisse leur a aussi notifié onze décisions d'intérêts moratoires pour les années 2014 à 2018, ainsi que, le 9 août 2019, une décision d'intérêts pour le premier semestre 2019.
Saisie d'une opposition des époux A._ et B._ contre toutes les décisions de cotisations personnelles du 22 mai 2019, la caisse l'a rejetée par décision sur opposition du 10 octobre 2019.
B.
A._ et B._ ont déféré conjointement la décision du 10 octobre 2019 au Tribunal cantonal de la République et canton de Neuchâtel, Cour de droit public. Ils ont conclu à son annulation et à ce que la caisse ne perçoive pas de cotisations personnelles calculées pour les personnes sans activité lucrative ni d'intérêts moratoires y afférents.
Par arrêt du 3 septembre 2020, la juridiction cantonale a admis partiellement le recours, en ce sens qu'elle a annulé la décision sur opposition du 10 octobre 2020 en tant qu'elle concerne les années 2014 à 2016, au sens des considérants.
C.
La caisse interjette un recours en matière de droit public contre cet arrêt. A titre principal, elle conclut à son annulation partielle dans le sens des considérants exposés, ainsi qu'à la confirmation partielle de sa décision du 10 octobre 2019. A titre subsidiaire, elle conclut au renvoi de la cause à l'instance judiciaire précédente pour nouvel arrêt dans le sens des considérants exposés.

Considérant en droit :
1.
Le recours en matière de droit public peut être formé notamment pour violation du droit fédéral (<ref-law>), que le Tribunal fédéral applique d'office (<ref-law>), n'étant limité ni par les arguments de la partie recourante, ni par la motivation de l'autorité précédente. Le Tribunal fédéral n'examine en principe que les griefs invoqués, compte tenu de l'exigence de motivation prévue à l'<ref-law>, et ne peut aller au-delà des conclusions des parties (<ref-law>). Il fonde son raisonnement sur les faits retenus par la juridiction de première instance (<ref-law>), sauf s'ils ont été établis de façon manifestement inexacte ou en violation du droit au sens de l'<ref-law> (<ref-law>). Le recourant qui entend s'écarter des faits constatés doit expliquer de manière circonstanciée en quoi les conditions de l'<ref-law> sont réalisées, sinon un état de fait divergent ne peut être pris en considération.
2.
2.1. Compte tenu des conclusions et des motifs du recours, le litige porte uniquement sur le statut de cotisant, sous l'angle du droit de l'assurance-vieillesse et survivants, et sur la fixation des cotisations personnelles en découlant pour A._ pour l'année 2014 et pour B._ en ce qui concerne l'année 2016. La conformité au droit fédéral de l'arrêt attaqué quant à l'année 2015 n'est en revanche ni abordée ni remise en cause dans le recours, de sorte qu'elle n'a pas à être examinée en l'espèce (cf. consid. 1 supra).
2.2. Sous l'angle de la révocation des décisions de cotisations antérieures par les décisions du 22 mai 2019, la juridiction cantonale a considéré que la recourante avait effectué une révision procédurale au sens de l'<ref-law>. Dans ce contexte, en ce qui concerne les cotisations relatives à l'année 2014, les premiers juges ont constaté que la communication fiscale déterminante était intervenue le 12 novembre 2015, de sorte que le délai de 90 jours prévu à l'<ref-law> (applicable par renvoi de l'<ref-law>) dès la découverte du motif de révision ne semblait pas avoir été respecté. Elle a toutefois laissé cette question ouverte, car les intimés ne pouvaient pas être considérés comme personnes sans activité lucrative pour l'année 2014, A._ ayant été au bénéfice d'un contrat de travail de durée indéterminée pour une activité à 50 % qui portait sur toute l'année 2014. En outre, les cotisations prélevées en 2014 sur son revenu de salarié avaient atteint, à tout le moins, le double de la cotisation minimale, si bien que son épouse B._ était réputée avoir payé elle-même des cotisations puisqu'elle se trouvait dans la situation visée par l'<ref-law>. Quant à l'absence de A._ pour cause de maladie à son poste de travail durant quelques mois en 2014, qui avait entraîné la réduction de sa rémunération et le versement d'indemnités journalières en sa faveur, elle ne justifiait pas l'application de l'<ref-law>. Pour ce motif, la décision sur opposition du 10 octobre 2019 devait être annulée en tant qu'elle concernait l'année 2014, aucun intérêt moratoire n'étant dû pour cette même année.
S'agissant des cotisations afférentes à l'année 2016, les premiers juges ont constaté que la communication fiscale s'y rapportant était intervenue le 10 janvier 2019. Dès lors que plus de 90 jours s'étaient écoulés depuis le moment où la recourante avait eu connaissance des éléments à l'origine de ses décisions de cotisations du 14 juin 2018 et le 22 mai 2019, date à laquelle elle avait changé le statut de cotisants des intimés par voie de révision procédurale au sens de l'<ref-law>, elle avait agi tardivement (cf. <ref-law>). Les conditions d'une telle révision n'étaient donc pas réalisées, de sorte que la décision sur opposition du 10 octobre 2019 devait également être annulée en tant qu'elle concernait l'année 2016, aucun intérêt moratoire n'étant par conséquent dû pour cette année.
3.
La recourante invoque une violation du droit fédéral (<ref-law>), en particulier un abus du pouvoir d'appréciation de l'instance précédente, ainsi qu'un établissement manifestement inexact des faits et en violation du droit (<ref-law>). En ce qui concerne l'année 2014, elle relève que A._ avait réalisé un salaire de 11'035 fr., qu'il avait bénéficié d'indemnités journalières pour cause de maladie d'un montant de 34'694 fr. de février à novembre 2014, et qu'il avait une fortune de 14'566'580 fr. Rappelant notamment que les indemnités journalières ne font pas partie du salaire déterminant mais entrent dans la catégorie des revenus acquis sous forme de rente pour le calcul des cotisations AVS des personnes sans activité lucrative, elle reproche aux premiers juges d'avoir admis à tort que l'<ref-law> ne s'applique pas à des assurés dont l'activité lucrative doit être considérée comme durable et à plein temps simplement parce que, présentant une incapacité de travail en lien avec leur état de santé, leur rémunération est temporairement inférieure à 50 %. Quant à l'année 2016, la recourante relève que les cotisations payées par A._ pour un total de 905 fr. 85 n'atteignent pas le double de la cotisation minimale (956 fr.), de sorte que son épouse B._ a l'obligation de verser des cotisations en sa qualité de personne sans activité lucrative, au sens de l'<ref-law>.
4.
4.1. Les motifs du recours sont contradictoires en ce qui concerne les cotisations relatives à l'année 2014. En effet, la recourante admet expressément que les conditions de la révision procédurale n'étaient pas réalisées pour cette année-là en raison du non-respect du délai de 90 jours prévu à l'<ref-law>. Elle semble toutefois en ignorer les conséquences puisqu'elle persiste à demander que le statut de A._ soit revu et qu'il soit considéré comme une personne sans activité lucrative.
Quoi qu'il en soit et comme les premiers juges l'ont constaté, A._ exerçait en 2014, et depuis plusieurs années, une activité salariée à 50 % au service de D._. Cette activité était réputée durable au sens de l'<ref-law>, relatif aux personnes n'exerçant pas durablement une activité lucrative à plein temps, dès lors que l'assuré était occupé durant la moitié du temps usuellement consacré au travail (cf. <ref-ruling> consid. 1.2; <ref-ruling> consid. 10d). En présence d'une activité salariée durable on ne saurait admettre qu'une réduction temporaire de la rémunération d'un assuré salarié, qui devient momentanément inférieure à celle qu'il percevait à mi-temps en raison d'une incapacité de travail en lien avec son état de santé, aboutisse à modifier immédiatement son statut et à le considérer comme une personne sans activité lucrative. L'<ref-law> ne s'applique pas à une telle éventualité où l'assuré a repris son activité salariée avant la fin de l'année en cause.
4.2. En ce qui concerne l'année 2016, les motifs du recours sont également contradictoires. Là aussi, la recourante reconnaît le bien-fondé de l'annulation de la décision sur opposition. En particulier, elle ne remet pas en cause la constatation de la juridiction cantonale selon laquelle le délai de révision de 90 jours prévu par l'<ref-law> n'avait pas été respecté, mais elle revient à nouveau sur le contenu de la décision initiale, afin que B._ soit considérée comme une personne sans activité lucrative et appelée à cotiser conformément à l'<ref-law>. On ne saurait suivre ce raisonnement: dès lors que la recourante ne conteste pas que les décisions de cotisations du 14 juin 2018 relatives à l'année 2016 ne peuvent pas être revues par le biais de la révision procédurale au sens de l'<ref-law>, il n'y a pas à examiner le statut de B._ ni son obligation de verser des cotisations pour cette année-là.
4.3. Il s'ensuit que le recours est infondé.
5.
La recourante, qui succombe, supportera les frais de la procédure (<ref-law>; ch. 1 du Tarif des émoluments judiciaires du Tribunal fédéral, du 31 mars 2006, RS 173.110.210.1). Ceux-ci sont fixés en fonction du montant des cotisations afférentes aux années 2014 et 2016 ainsi que des intérêts moratoires y relatifs, restés litigieux devant le Tribunal fédéral.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 4000 fr., sont mis à la charge de la recourante.
3.
Le présent arrêt est communiqué aux parties, au Tribunal cantonal de la République et canton de Neuchâtel, Cour de droit public, et à l'Office fédéral des assurances sociales.
Lucerne, le 9 juillet 2021
Au nom de la IIe Cour de droit social
du Tribunal fédéral suisse
Le Président : Parrino
Le Greffier : Berthoud