If your puppy is just 3.5 month old and he has already gained 16 kg, I feel he is overweight and perhaps, that's the reason why you've been experiencing joint problem in him. He's joints are just not strong enough now to bear the 16 kg weight his body has gained.
The only way out of this is to regulate his diet. Don't overfeed him. Give him fair amount of exercise in form of walks and running. Also, try and don't let him run or play in slippery floor. Keep feeding him the supplements your vet prescribes.