Preheat the oven to 350°F/177°C.
Butter a 9-inch springform pan and coat all sides with the finely crushed amaretti cookies. Put the pan in the freezer until ready to use.
Drain the ricotta by putting it in a linen towel and squeezing gently.
In a large bowl, beat the eggs until foamy. Beat in the ricotta, sugar, orange and lemon zests, and liqueur.
In a medium saucepan, combine the milk and water and bring to a simmer over medium heat. Add the semolina in a fine stream, stirring constantly; whisking it adds too much air. Stir in the salt and cook, stirring, until thick and creamy, about 3 minutes. Allow to cool for 5 minutes or so.
Stir the cooked and slightly cooled semolina into the ricotta mixture, then stir in the citron. Pour into the prepared pan.
Bake until the top of the cake is golden and a sharp knife inserted in the center comes out clean, about 1 hour 10 minutes. Cool on a wire rack.
Transfer to the refrigerator for at least 4 hours before serving. To serve, run a thin-bladed knife around the outside edge of the cake. Remove the springform sides, and serve the pudding/cake off the base.