My objects are semi-transparent, and not one behind the other in the compositor
What you describe as "transparent" is the result of adding the RGB pixel information of an image to that of the others.

When using add the pixel values of each of the images are summed and will make final image brighter.



If you want them to create the illusion of having one image in front of another, you need to use an alpha channel and have that control how images are combined.

A proposed workflow:


Render each layer with a transparent background, to do that enable the Film Transparent Option for the scene.





Use the alpha channel to determine how they combine over each other. The Alpha Over node is one of the options that will allow you to do that.


The node sockets to which the images are connected determines the result:

The background image should be connected to the top socket

The foreground image or scene to the bottom socket.

The foreground's alpha channel is used to control the overlay the foreground's RGB color information on to the background.



click on the image to enlarge

The most basic example would be like this: where the UFO is the foreground element and is combined over the landscape using the UFO image's Alpha Channel:



click on the image to enlarge

If you have more than two layers, you combine one on top of another, and then combine the result with yet another layer and so on like this:



click on the image to enlarge

Note that if the background image has an alpha channel, both alphas are combined.


click on the image to enlarge

An alternative to the Alpha Over node would be using a RGB mix node and using the Alpha channel of the foreground layer control the mix with the background:

 

click on the image to enlarge

Another example:

A simple scene: Three circles, the red is on top of the others and the green on top of the blue one. They've been separated in different layers.



Using the add operation will result on the sum of the values for each pixel for each of the RGB channels of the image, a simple A+B operation.

See what happens where the circles overlap, where each of the RGB values of a layer are added on to those of the other layers:



The Alpha over operation is a bit more complex: A+B(1-alpha)