Regarding 2), what about increasing the system_dpi when virtual modes are used so that the smallest mode ends up with 96dpi? Not entirely sure how to do that, and it will probably also require changing the wayland driver scaling computation.
Or maybe instead of changing system_dpi which *will* be seen by every application, decide that Wine virtualized monitor dpi will always be relative to 96dpi at 640x480, the minimum supported resolution, and let driver adjust their scaling. Only per-monitor DPI aware applications should be able to read that, and we can only hope that they'll be happy about it.
Still remains the question to whether changing DPI dynamically is a good idea, I can very well imagine per-monitor DPI aware app deciding to adjust things based on that after they changed display modes.