Is it practical to generate onion addresses and attempt to connect to them via the tor client or is there a better approach? How can one get an estimate of the number of services available?
It is absolutely impractical to shoot in random directions hoping to hit something. There are roughly 10^24 possible addresses, and roughly 10^4 actual live onions. (If you can do 100/sec, you will have 1 hit per 30 billion years on average.)
More viable methods are to run a crawler, or possibly to run a HSDir and log descriptors.
If you just want to find onions, see this question: How do I find onion sites?