Just a note...
This statement is not accurate:
In an MVVM architecture, models should be kept free of UI-related logic.
Generally, this is impossible, because the UI can be, and usually is, an essential part of the overall application logic. The right approach is to isolate and abstract out the UI implementation. Can you see the difference? The criterion for this abstraction is met when you can easily replace the View with something completely different, using a different UI framework, and so on. But not to separat the logic itself.
Now, to discuss the particular architecture issue, including one of the most important issues, code duplication, you have to provide an abstract description of your project goals and most basic requirements, importantly, not based on your existing code.
Your existing code can be discussed separately, when we have the understanding what the application can do.