Faits:
A. Par jugement du 27 juin 2008, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a condamné A._ à une peine privative de liberté à vie, pour meurtre et assassinat de sa mère, respectivement d'une amie de celle-ci et de sa soeur. Cette condamnation a été confirmée par la Cour de cassation pénale du Tribunal cantonal vaudois, par arrêt du 29 octobre 2008.
Après l'admission d'une demande de révision, la cause a été renvoyée devant le Tribunal criminel de l'arrondissement de Lausanne. A._ a formé une demande de mise en liberté qui a été rejetée par le Président du Tribunal d'arrondissement, le 17 décembre 2009. Le Tribunal d'accusation du Tribunal cantonal vaudois a confirmé cette décision le 14 janvier 2010. Par arrêt du 17 février 2010, le Tribunal fédéral a admis le recours formé par A._ et renvoyé la cause au Tribunal d'accusation, en raison d'une violation du droit d'être entendu: l'intéressé n'avait pas été en mesure de se prononcer sur les déterminations des parties civiles. Le 18 février 2010, A._ a été invité à formuler ses observations sur les déterminations des parties civiles, et à faire savoir s'il entendait récuser le Juge cantonal B._. Le 19 février 2010, A._ a confirmé sa demande de récusation, qui a été admise le 4 mars 2010.
Par jugement du 18 mars 2010, le Tribunal criminel de l'arrondissement de Lausanne a maintenu la condamnation prononcée le 27 juin 2008. A._ a recouru auprès de la Cour de cassation pénale du Tribunal cantonal.
B. Par arrêt du 29 mars 2010, le Tribunal d'accusation a écarté le recours contre la décision du 17 décembre 2009. Dès lors que la cause avait été jugée sur le fond et qu'un recours avait été exercé, le Président de la Cour de cassation était seul compétent pour statuer sur une demande de mise en liberté. Le Tribunal d'accusation n'était donc plus compétent de sorte que le recours était irrecevable. Il aurait dû être rejeté pour les motifs exposés dans les trois arrêts rendus précédemment par le Tribunal d'accusation, à défaut de circonstances nouvelles.
C. A._ forme un recours en matière pénale contre ce dernier arrêt. Il demande au Tribunal fédéral de constater que le principe de célérité a été violé, d'enjoindre les autorités vaudoises à statuer dans les plus brefs délais et de retourner le dossier au Président de la Cour de cassation cantonale pour nouvelle décision au sens des considérants. Il a demandé par la suite l'assistance judiciaire.
Le Tribunal d'accusation et le Ministère public se sont déterminés dans le sens du rejet du recours.
Le recourant a répliqué.

Considérant en droit:
1. L'arrêt attaqué a trait à la détention du recourant, qualifiée de détention préventive. Il s'agit d'une décision en matière pénale au sens de l'<ref-law> (cf. <ref-ruling> consid. 1.1 p. 273).
1.1 Formé en temps utile (<ref-law>) contre une décision prise en dernière instance cantonale (<ref-law>), le recours en matière pénale est en principe recevable.
1.2 Le recourant ne conclut pas à sa mise en liberté, mais à la constatation d'une violation du principe de célérité et au renvoi de la cause au Tribunal d'accusation afin que celui-ci statue sur le recours cantonal. Le recourant n'indique toutefois pas en quoi il disposerait d'un intérêt juridique à un tel arrêt de constatation (<ref-law>), de sorte que sa conclusion est irrecevable. Le recourant n'a pas non plus d'intérêt actuel à ce que le Tribunal fédéral enjoigne les autorités cantonales à statuer à bref délai sur le recours cantonal, dans la mesure où, depuis le prononcé du nouveau jugement du 18 mars 2010, un autre titre juridique de détention s'est substitué à la décision du 17 décembre 2009. Au demeurant, ces conclusions (renvoi de la cause à la cour cantonale ou au Président de la Cour de cassation cantonale), sont, comme on le verra, mal fondées.
1.3 Enfin, le recourant perd de vue que l'arrêt attaqué est fondé sur une double motivation. L'une, principale, conduit à l'irrecevabilité du recours cantonal. L'autre, subsidiaire, conduit à son rejet sur le fond. Le Tribunal d'accusation s'est en effet référé à ses trois arrêts rendus précédemment, considérant qu'aucune circonstance nouvelle n'était établie. Il s'agit d'une motivation par renvoi, admissible en matière de détention préventive, dans la mesure où le recourant est à même de faire valoir efficacement ses objections (<ref-ruling> consid. 4c p. 285; <ref-ruling> consid. 3a p. 409; arrêt 1B_22/2009 du 16 février 2009 consid. 2.1 et les références). Or, le recours ne contient pas la moindre argumentation à cet égard, ce qui le rend également irrecevable pour ce motif (<ref-law>; <ref-ruling> consid. 6.3 p. 120/ 121).
A supposer qu'il soit recevable, le recours devrait de toute manière être rejeté.
1.4 En vertu de l'<ref-law>, le Tribunal fédéral n'examine la violation de droits fondamentaux ainsi que celle de dispositions de droit cantonal que si ce grief a été invoqué et motivé par le recourant. Le recourant ne peut donc se borner à critiquer la décision attaquée comme il le ferait en procédure d'appel, où l'autorité de recours jouit d'une libre cognition; il doit démontrer, par une argumentation précise, en quoi consiste l'inconstitutionnalité alléguée. Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire (cf. <ref-ruling> consid. 1.3 et les arrêts cités).
2. Invoquant l'art. 29 al. 1 Cst., le recourant se plaint d'un formalisme excessif. Il estime que le Tribunal cantonal devait, après avoir constaté qu'il n'était plus compétent, transmettre la cause au Président de la Cour de cassation. A défaut, l'ordonnance du 17 décembre 2009 n'aurait toujours pas fait l'objet d'un contrôle, près de cinq mois plus tard. Le recourant se plaint aussi d'arbitraire.
2.1 Selon la jurisprudence, il y a formalisme excessif, constitutif d'un déni de justice formel prohibé par l'art. 29 al. 1 Cst., lorsque la stricte application des règles de procédure ne se justifie par aucun intérêt digne de protection, devient une fin en soi et complique de manière insoutenable la réalisation du droit matériel ou entrave de manière inadmissible l'accès aux tribunaux. L'excès de formalisme peut résider soit dans la règle de comportement imposée au justiciable par le droit cantonal, soit dans la sanction qui lui est attachée (<ref-ruling> consid. 5 p. 253; <ref-ruling> consid. 5.4.1 p. 183; <ref-ruling> consid. 2a p. 142; <ref-ruling> consid. 2a/bb p. 34 et les arrêts cités).
2.2 En l'occurrence, le recourant ne conteste pas que la cour cantonale a bien perdu sa compétence pour connaître du recours, après le jugement rendu sur le fond par le Tribunal criminel de l'arrondissement de Lausanne et le recours exercé contre celui-ci. Il ne prétend pas que l'exigence d'un contrôle judiciaire de la détention (art. 31 al. 4 Cst. notamment) aurait imposé au Tribunal d'accusation de statuer malgré tout. Conformément à l'<ref-law>, il n'appartient pas au Tribunal fédéral d'examiner la question. Au demeurant, un tel contrôle a bien eu lieu puisque la cour cantonale a examiné, de manière subsidiaire, le bien-fondé de la détention.
2.3 Le recourant ne conteste pas non plus que seul est compétent à ce stade, pour statuer sur une demande de mise en liberté, le Président de la Cour de cassation cantonale. Le grief de formalisme excessif porte uniquement sur le refus de transmettre le dossier à cette autorité. Il est toutefois infondé. L'arrêt attaqué a en effet mis fin définitivement à la procédure de recours. La Cour cantonale a estimé que le Président de la Cour de cassation était compétent pour statuer sur la détention du recourant, mais non pour connaître d'un recours contre une décision précédente. N'étant pas autorité de recours, le Président ne pouvait par conséquent statuer en se substituant à la cour cantonale. La présente cause diffère, sur ce point de la jurisprudence mentionnée par le recourant (JdT 1982 III 117, concernant un recours formé alors que le jugement est déjà intervenu sur le fond; arrêt 1B_148/2007 du 19 juillet 2007, concernant la Chambre d'accusation genevoise, restée compétente pour statuer sur la détention après opposition à une ordonnance de condamnation).
Pour sa part, le recourant était en mesure d'adresser immédiatement une nouvelle demande de mise en liberté auprès de l'autorité compétente; une telle démarche ne constituait pas une complication excessive et permettait d'obtenir une décision à bref délai sur le maintien en détention. Il n'était pas non plus exagérément formaliste - ni arbitraire - de refuser de considérer le recours comme une telle demande de mise en liberté, puisque celui-ci ne tenait pas compte des éléments nouveaux intervenus depuis le 17 décembre 2009, en particulier de la nouvelle condamnation du 18 mars 2010 qui constitue le titre actuel de détention. Le grief doit par conséquent être rejeté.
3. Le recourant invoque également les art. 29 al. 1, 31 al. 4 Cst. et 5 par. 4 CEDH. Il relève que son recours du 24 décembre 2009 n'a toujours pas été tranché et que la cour cantonale aurait tardé à statuer, après l'arrêt du Tribunal fédéral du 17 février 2010, notamment en procédant sur la demande de récusation (au lieu de remplacer directement le magistrat récusé) et en sollicitant de nouvelles déterminations des parties.
3.1 Comme cela est relevé ci-dessus, le recourant ne conclut pas à sa mise en liberté, mais à une simple constatation par le Tribunal fédéral, de la violation du principe de célérité, conclusion qui n'est pas recevable faute d'intérêt juridique. Le recourant ne saurait non plus conclure à ce que les autorités cantonales statuent à bref délai sur son recours, puisqu'une éventuelle admission de celui-ci ne pourrait avoir comme conséquence sa mise en liberté.
3.2 Le recourant n'a dès lors d'autre choix que de former lui-même une demande de mise en liberté à la seule autorité cantonale actuellement compétente, soit le Président de la Cour de cassation.
4. Sur le vu de ce qui précède, le recours est rejeté, dans la mesure où il est recevable. Le recourant a requis l'assistance judiciaire en indiquant qu'il se trouve détenu depuis plus de quatre ans, que ses avoirs ont été saisis et que la liquidation de la succession et son procès en divorce n'ont pas encore abouti. Sur le vu des considérants qui précèdent, la démarche du recourant paraissait d'emblée vouée à l'échec. Par ailleurs, le recourant ne démontre pas qu'il serait privé de ressources au point de ne plus pouvoir assurer ses frais de défense. La demande d'assistance judiciaire doit par conséquent être rejetée et les frais judiciaires sont mis à la charge du recourant, conformément à l'<ref-law>

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté, en tant qu'il est recevable.
2. La demande d'assistance judiciaire est rejetée.
3. Les frais judiciaires, arrêtés à 1000 fr., sont mis à la charge du recourant.
4. Le présent arrêt est communiqué au mandataire du recourant, au Ministère public et au Tribunal d'accusation du Tribunal cantonal du canton de Vaud.
Lausanne, le 1er juin 2010
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président: Le Greffier:
Féraud Kurz