ThemeResourceLocator takes a second parameter to supply a theme list.
The issue you are having is not new to SS4 - Silverstripe CMS has always explicitly unset the theme (so “front-end” themes don’t interfere with the CMS layout).
One way to re-set this behaviour without changing global state (setting the theme list) in SS4 is:
The second parameter in this example is the default behaviour of
Another way to handle this is to enable the themes again via the
SSViewer.theme_enabled configuration variable (the CMS disables the themes IIRC). But again this is modifying global state, which you must remember to reset after processing.