Kakashi also said against Zabuza that he never do the same error twice, and we can see it again when he fought for a rematch against Itachi(he prepared a plan to counter his genjutsu style with Kage bunshin). Kakashi is the type of ninja who can find his way to win just by seeing an attack once. Even Itachi said that Kakashi is really impressiv to have seen through him just by fighting him once. So yes Deidara could prepare himself against Kamui, but Kakashi is not idiot too to use kamui without knowing it could hit. If you think Deidara could use Kage bunshin, don't forget Sharingan can predict movements and see hand seals, so Kakashi will always be aware of that in time, unless Deidara does the clone when Kakashi failed to notice it. The last time he used kamui and it worked(he took his arm) and at that time he couldn't even control the jutsu very well. Now that he has better control, it would be much more easier.
Gai can surely begin with gates. When Gai see that an ennemy is strong enough, he uses gates. You can even see it right now. He used gates directly when he fought Kisame, like he used gates directly against Tobi and Bijuus. So why could he not begin with gates when he has already shown he can? Like i've told you before, Sasori always begin his fights with Hiruko and that's where he will make an error if he fights someone like Gai. In hiruko, Sasori is slow, and with Gais speed in gates mode, he could destroy him. Even if Sasori manage to escape one attack, he won't last long, cuz he is a long range fighter who needs time to control his puppets. At that time, Gai could beat him.