The OP has an extremely flawed process. So, poor results.
The milk (and not the starter, hopefully obviously) should be scalded - held at a fairly high temperature (180-185F 83-85C) for a good long time. It does not matter if it's UHT or Raw before you start - you are going go well beyond pasteurizing on the time front with the intention of changing the milk (so it sets better) rather than with the intention of killing things quickly and changing the milk as little as possible. If you pulled a sample of the milk at this point (I don't suggest doing so, as it provides a needless opportunity for contamination) it will taste distinctly cooked - like UHT, but more-so.
A minimum of 30 minutes is good, more does no harm. Jars or PP (#5) plastic containers over simmering water in a closed pot work fine. You can then let the milk cool to 115F 46C or so naturally, or force-cool it if you like that sort of fuss and bother. In covered jars or containers it is not at risk until you open it to add cultures. You should steam a spoon while you are at it, for mixing the culture in. Everything that touches the milk after the scalding process needs to be as clean as possible.
Once sufficiently cool, mix in 1 Tablespoon per quart / 15 ml per liter of starter - more is not better; as I recall, the culture likes to feel that it has some room too work, and excess starter inhibits it to an extent. If too hot, you'll kill the bacteria in the starter, so don't be impatient about cooling.
Then you need to keep it warm for a while. Approaches vary from packing it in insulation to hold itself (works better for a large quantity, or you can supply water in separate containers as additional warm thermal mass) to thermostatically controlled heated chambers. Temperatures can be from 115-95F (46-35C) and the specific temperature profile affects the balance of cultures you get, and thus the flavor and speed-of-setting of the yogurt. I happen to have arrived at 35-37 for 24 hours as suiting my tastes better, commercial production is focused on getting it done quicker to start the next batch and uses higher temperatures. Insulated-box methods obviously use a range of temperatures as the yogurt cools slowly.
Not disturbing the yogurt while the protein mesh is forming is fairly important in getting a good set. Commercial processes often use some sort of thickener such as corn starch or gelatin rather than depending on the yogurt itself to hold shape, but a good set is possible without those products, especially for a home product that does not need to be shipped.
While you certainly can add dry milk powder as an easy way to get extra solids, it's also not needed (and since it costs more than liquid milk where I am, I don't use it.)
I should be able to dredge up some references, eventually, but all my research was some years ago, and I built a process based on that research which is what I have related here.