If there is significant data that just has to be transferred within a given, larger timespan, e.g., if you need that update within the day or upload the picture(s) you took over the course of your lunchbreak, or similar situations, you could transfer that data when you want to send masking traffic. This way you don't have to generate dummy data to serve as masking traffic.
Ah, that's clever. It's hard to come up with a bunch of bulk data that needs to be transferred 'sometime in the next day or two'. Phone updates might be one but they are sporadic, and backups could be another. Also you'd need a supply of near-term bulk transfers in both directions. Interesting idea for sure.
I hope someone notices this idea and implements this.
Having two virtual network interfaces, one for high-priority traffic that you want to mask, and one for low-priority traffic that only gets sent as masking data, might be a good way to keep it low in the layer stack.
You need to be careful as to the interactivity of the protocols. Non-interactive transfers are _much_ easier to mask if you can use such delays due to the lack of things to correlate without massive noise.