It's been a while since Ive used ctcp. (My server has ctcp's disabled) I cannot test the username return either so this code is relatively untested.
#1 you have the switch to turn who on join on or off.
#2 on join if switch is on who $nick
#3 raw 352 (who return) if Takeover is in $9- (usertag) set a variable to let script know you want the nick kicked on ping reply then ctcp ping $nick
#4 on ctcpreply PING if variable is there kick nick unset variable to clean up.
Its been a while since Ive used PING's and ctcpreply's I could be wrong but this is the basic idea.

menu menubar {
-
Join Ping:{ $iif(%jping,unset,set) %jping $true }
-
}
on !@*:join:#:{
if (%jping) who $nick
}
raw 352:*:{
if (Takeover isin $9-) { set %tping $3 | ctcp $3 PING }
}
on *:ctcpreply:PING:{ if ($nick == %tping) { kick $chan $nick | unset %tping } }