Hi,
Your trip sounds great! :-) There are so many options, so I think it would maybe help if you could give a little more information about your interests. What kind of activities and experiences are you looking for? Do you want to see animals, do extreme adventure activities or sports (surfing, kayaking, skydiving, hiking etc), wine tasting, learn about history, see beautiful natural scenery (deserts, forests, mountains, beach)? Are you willing to rent a car and drive? In my opinion this is the best and most convenient way to experience South Africa. There are also cheap flights available between cities.
You are traveling during the high season, the schools start again on 11 January so things might be a bit busier than usual. Personally I prefer using booking.com to book accommodation beforehand and make use of the free cancellation option on many rooms if needed. If you want to visit Kruger National Park it is best to book accommodation as far in advance as possible since it is very popular.