Is it appropriate to use "sport", "champ", or "kiddo" to call a child (e.g. your son)?
Don't worry about what Urban Dictionary says. While it's true, in some cases, it's not true for everyone all the time. Those three nicknames are a little bit dated, especially Sport and Champ. I wouldn't use those two at all: your son's classmates'll change the first to "Chump" or "Chimp" and the second to "Spurt". I sometimes call my wife "Kiddo", and I sometimes call my son "Kiddo". It's okay for anyone, but not really as a nickname.
Parents call their children by all kinds of names and nicknames. All names can be used pejoratively, especially by children's peers. When I was in high school, a little word game called "mother mock" was popular. My mother's name is Katherine, "Kay" for short. When my classmates wanted to mock my mother, they'd say "Eff you see Kay, tell her I love her" = "F-U-C-K, tell her I love her". I don't remember any others.
My son's English name is William. I call him "Willie" in English to distinguish his name from mine, "Bill", and at school, some of his friends call him "Wei-Li" in Chinese, and some Taiwanese call him "William". His Chinese name is "Yi-Hong", a perfectly normal name, but he doesn't like it and thinks it sounds like a girl's name. I always called him "Di-di", Chinese for "little brother", when he was small, which is what almost all Taiwanese call their sons. Maybe you can use that nickname.
When I grew up, I legally changed my first name because nobody used it: everyone called me by my middle name.
There's no need to call your children by nicknames. I always called my first son David, never "Dave" or "Davy". Now at 44, he calls himself "Dave".
I suggest that you call your son by the name that you gave him when he was born. Names are important. If you give a kid a name and then don't use it, the kid'll wonder why. I did. If you name him "Antonio", why call him "Tony"? If you name him "Archibald", why call him "Arch"? If you don't like the full name, then give him the short name. Just make sure that any nickname you can't prevent yourself from using isn't embarrassing to him, and if he asks you to stop using it, please respect his request.
I agree with @Bill Franke's "call him by his name" point completely, and I would also second the ignore-Urban Dictionary-definitions-because-they're-sarcastic argument. However, to offer an answer to the last question, I hear "buddy" and "son" most often. Here are my impressions of the usage of those words.
"Buddy" is a good option because it, hopefully, literally describes a way you see your son. In that sense, it does not replace the boy's name the way "champ" does when it is used as a general non-descript moniker--when your son has not just become a champion. You could easily use "buddy" and the boy's name in the same breath.
Hi, Tim. How was school today, buddy?
"Son" could be used in the above example, but it also has an austere sensibility that I like. It defines your relationship, defines it in its simplest form, and it has a connotation of valuing the distinction between mother or father and son. As such, it can sound rarefied, and this should be considered when using it.
Son, sit down for a minute. Let me explain something.
"Son" would be preferable to create a stern tone. "Buddy," by comparison, would not help to convey that stern of a tone. It would convey a ligher tone, as if the explanation were of something light-hearted and not something serious.
When my dad called me son, he was reminding me that he was my father, that he was in charge. If he called me buddy, the relationship was more balanced.
Full disclosure: This is conjecture as I don't have kids. But, if I am lucky enough to have a son, I will call him by his name first, and then I would use "son" in sincerity as my go-to moniker.