I will answer your second question, as it will be quite easy to find out the answer on your first question on your own.
Let me start by mentioning that there's another sort of ticket called Swiss Transfer Ticket Combi which is a return ticket from a border crossing or an airport to any place in Switzerland and then back to the airport. It will also allow you to buy all other tickets at half the price in between. I don't think this will be good for you though, as you don't seem to travel back to Geneva Airport.
Now for your second question. As far as I know, there isn't really point in buying tickets anywhere than from the railways themselves. The prices are fixed and don't depend on when you buy them. On the plus side this means that you can buy the ticket at the counter or the ticketing machine and it will be the same price as if you bought them online.
There still is some options to get cheaper tickets. There are so called supersaver tickets. These tickets are sold for a specific train connection (other tickets are valid for any train the same day) and are limited in numbers. Usually they are only available for non-peak hours and on specific routes. They are released one month in advance, and can run out quite fast.
Another (a bit obscure option) for your second leg to Basel is to buy a ticket from the German railways to take advantage of their very cheap international saver offers. They have offers, where it's possible to get a ticket for 39 Euros from anywhere in Switzerland to anywhere in Germany (and vice-versa). So instead of booking a ticket to Basel, you pick a city the other side of the border (try Freiburg, Stuttgart or Frankfurt) and make sure that the connection goes through Basel where you will get off the train and not take the connection to Germany. This is often substantially cheaper. Note however, that the sales of this ticket starts 3 months in advance and can sell out quite fast as well.
Of course this second option doesn't work for your first leg, as Geneva-Leukerbad is nowhere close Germany. Also note that as @Relaxed mentioned, it is currently not possible to buy tickets after the 12th of December, as this is the date of the change of timetable and the new time table hasn't been announced yet.