Heat the oil in a large, deep saucepan. Add the onion and fennel and cook for 5 minutes, or until starting to soften. Add the garlic and tomato purée and stir for 30 seconds. Add the wine, stock and tomatoes. Bring up to the boil, add the saffron, basil stalks and orange zest. Cover and simmer for 10 minutes.
Discard any mussels with broken shells and any that refuse to close when tapped. Add the mussels, turn in the pan and cover with a lid. Boil for about 4 minutes, or until all of the mussels have opened. Discard any that have not opened. Take the pan off the heat.
Carefully scoop out the cooked mussels. Reserve 18 mussels, then remove the remaining mussels from their shells and place in a small bowl. Discard the basil stalks.
Blend the soup until completely smooth, transfer to a saucepan and simmer uncovered for 10 minutes to reduce. (You should have about 2 litres/3½ pints in total at this point.)
Season with salt and pepper and add the juice from half the orange. Add the cod and seabass, cover and gently simmer for 3–4 minutes, then return the cooked mussels, reserved mussels in shells and the crayfish tails and heat for another 2–3 minutes, or until piping hot and all of the fish is cooked.
Spoon into bowls and sprinkle with shredded basil leaves.
To make the rouille, soak the saffron in the lemon juice and mix together with the garlic and mayonnaise in a bowl. Season with salt and pepper and spoon on top of the bouillabaisse.