One way is to add the following completion settings in your .zshrc to remove path-directories from the suggestion sources.
zstyle ':completion:*:complete:(cd|pushd):*' tag-order \
'local-directories named-directories'
Alternatively or additionally, the following settings should display a heading for all respective groups of completion suggestions so you can see which directories are local directories and which are suggestions from your cdpath.
zstyle ':completion:*' group-name ''
zstyle ':completion:*:descriptions' format %d
You can apply standard prompt formats to these descriptions to make them stand out:
zstyle ':completion:*:descriptions' format %B%d%b # bold
# zstyle ':completion:*:descriptions' format %S%d%s # invert/standout
# zstyle ':completion:*:descriptions' format %U%d%u # underline
# zstyle ':completion:*:descriptions' format %F{green}%d%f # green foreground
# zstyle ':completion:*:descriptions' format %K{blue}%d%k # blue background
# etc.
That helps make sense of the different sources quite a bit in my experience.
By the way, zsh has two representations for those array variables like PATH and CDPATH, of which the lower case variant is a true array. This means you can:
cdpath=(.. ../..)
export CDPATH
I personally find it a bit more readable.