My (perhaps incorrect) understanding is that with dynamic (kernel
thread) places, only the foreground place can have a GUI. I'm not sure
why the gui package won't load in a background place, but it may not
work right even if you can get it to load.
Just a suggestion: you might try using Paulo Matos's "Loci" package - it
simulates dynamic places using separate processes. With Loci, the place
is foreground in its own process, so it /might/ allow racket/gui to work.
https://pkgs.racket-lang.org/package/loci
Hope this doesn't lead down a rabbit hole.
George