Answering your first question (i think)
I think it makes sense to have a rest call that returns a single value (so retrofit with a suspend call), but then the thing you expose to your UI could be a Flow.
Using a Flow for a single value, just by definition doesn't make sense... but there's nothing inherently terrible with it IMO. For exampl. i had cases where we used firebase database queries and those were suspend calls. and then you can literally add a .observe to firestore and BAM. now you cant have a suspend. you need a flow. so yeah. maybe your network call can turn from a single into a stream.
but i would say. dont complicate things until they need to be complicated.