I have a personal convention for indicating this, but many people hate it: remove the "object out" terminal for any subVI that does not modify the private data.
If it has an "object out" then it modified the data. If it doesn't have an "object out" then it didn't modify the data.
Q: But, oh, how will we railroad track our VIs when calling multiple read methods?!
A: You won't. You'll call them in parallel like God and dataflow intended.
In my personal code, the only time I'll have an object out for a read-only method is when the class contains a refnum -- because by reference, you cannot be sure anything is read-only, and thus there is always a data dependency between function calls.