I do wonder whether it makes sense to try to copy the dump into the Emacs executable itself instead of leaving it as a separate file. We could do it independently of executable format by defining a data array in static storage that's initially full of, say, 15MB of zeroes prefixed by a long random header (like a MIME boundary), then, after we generate emacs.pdmp, copying the dump file into the executable at the place where we see that random header. If the dump turns out to be bigger than that 15MB, we can fail the build and ask the user to enlarge the array.
I don't know of any executable format for which this scheme would fail.
This way, we could get rid of the current complicated dump-file location logic early in Emacs init.