You can use global data in your resident programs with a bit of care. F.ex you can use a mutex to enter a critical section where you can retrieve the global data
That's entirely possible, although if you need to go to such lengths I'd say it would be better to go "ROMable" right away.
or initialize it if it's the first run of the program
This however will lead to resource leak and there's no "cleanup" called when the resident command is removed.
I say nuke the site from orbit, err, go for ROMable from the beginning...