I think you're off to a good start. I'm assuming the water parameters are soft/medium hard and slightly acidic? For cardinals this is critical.
A 20g well planted will not have a lot of swimming room, so fish choices should be those that are not active swimmers and prefer quieter calmer environments. And corys (they will settle down, activity is common for anywhere from a couple days to several weeks in a new environment), cardinals, Rams are all such fish--they like quiet, minimal water movement, sort of marshy pond or flooded forest conditions.
Four corys are fine; you could add 3-4 of another species too. Cardinals do best in groups of 6 plus, and you could either add more (say 9 total) or perhaps a group of 6 of another species of characin. Although rummynose tetra are ideal with cardinals, I wouldn't recommend these for a 20g as they are best in much larger groups, 12+. But there are some small-sized species that would do well: Ember Tetra, hatchetfish in the Carnegiella genus, some pencilfish, Loreto Tetra. I wouldn't look at the Hemigrammus clade (Hemigrammus and Hyphessobrycon species) as they get slightly larger in size.
On the algae, in such an environment one good choice would be a Farlowella vittata. Click on the shaded name to see the profile; I have never seen such an active algae eater except for Otos. And their relatively small size (don't let the length confuse you, although 6 inches they are very small fish), quiet behaviour, "odd" appearance to add interest, and perfectly peaceful nature--what more could one ask for.