An idea I had was to use the sprite bank and array plugins, dividing the area of the layout at runtime in a grid (by basically checking if environmentsprite x/y is within a square, then looping through all the grid sections in the layout) then saving all the objects in each section of the grid via the sprite bank plugin as a JSON string into a cell in the array.
Then you can compare the location of the player and each time they move out of a grid section, create and destroy objects that are in/out of range.
I haven't tried this yet, and it might be more complicated than it sounds, but it seems like it should work.