Already found the solution, just thought I'd post both the problem and what I eventually fixed it with in case it's of use to anyone. Also perhaps there's improvements to be made that I haven't though of which others might feel like enlightening me too (likely be a while before I check back though)

The wildcard was giving me every directory including sub directories of those directories when I used it, now since it's not safe to assume this will be the behaviour in every version of make AND I happened to need a version that only did the given directory/directories I went ahead and made some wrapper functions to force just one directory deep and then made a wrapper for that to recursively collect directory names. Here's what I made and how I used it:

Code:
subwild=$(strip $(foreach i,$(wildcard $1/$2),$(wildcard $i/$2)))
list_all=$(filter-out $(call subwild,$1,$2),$(wildcard $1/$2))
list_dirs=$(strip $(foreach i,$(call list_all,$1,*),$(if $(wildcard $i/*),$i)))
list_ents=$(strip $(foreach i,$(call list_all,$1,*),$(if $(wildcard $i/*),,$i)))
allsubdir=$(foreach i,$1,$i $(if $(call list_dirs,$i),$(call allsubdir,$(call list_dirs,$i))))
PRJ_DIRS:=$(call list_dirs,src)
PROJECTS:=$(PRJ_DIRS:src/%=%)
SRC_DIRS:=$(PRJ_DIRS) $(call allsubdir,$(PRJ_DIRS))