Start by placing a fine wire mesh strainer over a large bowl and then set aside. Add the whole milk to a saucepan and place over medium heat.
In a separate bowl, add the egg yolks and the sugar. Stir together with a whisk. This mixture will be dry and crumbly. Add the custard powder and continue to work with the whisk. Keep whisking until the mixture loosens and begins to thicken. The mixture is ready when it's light yellow in colour and a thick ribbon falls from the whisk when lifted up.
Next, temper the egg yolk mixture with the hot milk. Start by adding a splash of the hot milk to the egg yolk mixture and whisk it in completely. Repeat with another splash. Continue adding the hot milk, little by little, until about a third has been added. At this point you can add the milk in bigger amounts until it has all been added. This will gradually warm the egg yolks and prevent them from scrambling.
Return the milk mixture to the saucepan and cook over medium heat, stirring constantly. Cook until the custard thickens but before it comes to a boil. The mixture will thicken quickly and have the consistency of pudding. Immediately remove from the heat and pour the custard through the wire mesh strainer.
Work the custard through the strainer with a spatula. Add the vanilla extract and the heavy cream and whisk to combine. Cover with a piece of cling film placed directly on top of the custard to prevent a skin from forming. Chill the custard completely before churning. To speed up the chilling, you can place the bowl in an ice bath, otherwise refrigerate until the custard is below 50°F / 10°C.
Graham Cracker Coconut Base
Prepare a loaf pan by lining the bottom and sides with a piece of cling film. Spray lightly with non-stick spray and then set aside.
In a small bowl combine the graham cracker crumbs, coconut and chopped walnuts. Stir to combine and then set aside.
In a small saucepan melt the butter. Add the sugar and cocoa powder and whisk together. Add the egg and quickly whisk together. The mixture will quickly begin to thicken and appear clumpy. Remove from the heat and add the graham cracker mixture. Work the crumbs into the cocoa mixture.
When the crumbs have been completely worked into the cocoa mixture, transfer to the prepared loaf pan and press down evenly. Chill until the base is firm.
To assemble
When the ice cream custard base is thoroughly chilled, churn according to your ice cream maker's directions. While the custard is churning, prepare the mix-ins. Chop both the chilled graham cracker base and the Lindt milk chocolate balls into small, bite-sized pieces. Keep both mix-ins in the fridge or freezer until the ice cream has been fully churned.
When the ice cream is fully churned, scrape into a large bowl. Add the mix-ins and quickly fold together. Work quickly to prevent the ice cream from melting too much. Transfer to a freezer container and freeze until firm before serving.