I've been a GC running my own company for a little over 5 yrs. Lots of good advice people have given here. The summary takeaway was mentioned... Do your part to make it a 2way street. That goes for the contractor and the customer.
PRICE: In general I would not work for flippers, realtors, or any other customer who was shopping based on price. Personally, I'm not about to try to be price competitive with the cheap guy who isn't licensed, doesn't answer phone calls/txt/email consistently, isn't on time, doesn't carry insurance, can't communicate or manage a timeline, etc. the list goes on.
VALUE: If you're not getting the sense that a contractor wants to work with you, then don't and move on. Crappy contractors are a dime a dozen. Know the value of a good contractor. Decide if its worth dealing with all the problems that being cheap will bring. If you hire the cheapest company, they hire the cheapest workers because their prices are so low they can't afford to hire better (I know anomalies exist, but don't lose the point in this general statement). It's not just about job skills, but quality of the person. Do they have their lives together, or do they have substance abuse problems, reliable transportation, does their phone get shut off at random because they can't/don't pay their bills, etc. Someone who can't manage their own lives on a daily basis can't manage your job.
My worst customers have been those I've had to "sell" to get a job. I imagine the same is true for customers who have hired contractors against their better "gut feeling". My experience has been that my gut usually knows something even if I can't label what that something is.
GC or Self Manage: There's a difference between hiring a tradesman, a trade specific contractor, and a GC. Know what you're shopping for. I know lots of people can chime in who do it as cheap as possible every time. That typically consists of hiring tradesman who market themselves as "contractors" but are actually a skilled laborer with a truck and some tools to do a specific job over and over again as fast as they can. This is different from hiring a company and they usually lack some element of planning, communication, knowledge, professionalism, etc that causes issues along the way. The majority of investors I've known to use this strategy deal with a LOT of headaches. Are the headaches worth it? How much do those headaches cost you? If you have the ability, experience, and willingness to deal with issues, then you can use a budget "contractor". If coordinating multiple trades, tasks, and timelines isn't your thing, then you should hire a GC. If you can manage all the things a GC does for you, then do it yourself, but don't assume it'll be easy.
LIABILITY: I have flipped a couple houses for myself where I'm the contractor and the seller, so all liability falls back on me. But just because you're "only" the seller (or income property owner) doesn't absolve you from the responsibility to have work performed correctly. If you hire a cut rate "contractor" with no license or insurance you have opened yourself up to a lot of liability. Good luck finding this person or getting anything out of them if something goes wrong. Imagine the worse case scenario and you find yourself in court over a wrongful death suit because of something that happened with one of your properties and you have to answer all the questions about your decisions to hire the unlicensed, uninsured contractor. Will your choice to hire that contractor standup under scrutiny, or are you just gambling that it'll never come to that.
PLAN: The best way to save money in construction is to have a well detailed plan. This takes a lot of upfront work that doesn't make a lot of dust so people tend to get impatient and blow past this so they can start making visual progress. Changing the plan while your contractor is working gets expensive and stressful. Scope creep kills jobs, relationships, and budgets.
PAY: If I take money upfront it's because I don't trust you. If I don't trust you, I don't work for you. Therefore, I never take money upfront. ;) I might take a deposit for material costs to get the job started if I know I won't be taking a draw or payment before my material bills come due. However, I don't collect this until the material is on site. In short - you never pay in advance. You are always paying for something you've received, be it material or work completed. That said, I expect to get paid quickly, without complaint, when I ask for payment.
There are usually 2 reasons contractors take money upfront. 1) they've been burned by customers in the past so they're trying to avoid getting totally screwed. 2). Cash flow management issues and they need the money now to operate with - BAD NEWS - mostly likely to result in loosing your money, most likely to result in poor project management, scheduling issues, inflated change orders, or just plain walking off your job and leaving you stranded.