Software is hard to monetize, whether it be open source or not.

The best open source monetization case I've seen yet may be SQLite3, which is in the public domain. SQLite3 has a consortium, has some proprietary products (e.g., the more extensive test suite) not available to the public at large (in source form or otherwise), and is so ubiquitous that there are a number of large companies that are so utterly dependent on it that they are practically obligated to be members of the consortium. I've no idea just how profitable SQLite3 has been for D.R. Hipp and friends, and I don't want to know, but I assume it's been good enough that they are happy to continue working on it. SQLite consortium members probably (I imagine anyways) get to influence SQLite3's development, and that's one generic way to monetize source code regardless of license: get paid to do further (specific) development / bug fixes / support, but SQLite3's proprietary test suite makes it very difficult for third parties to be able to have contributions welcomed by the core, which tends to limit third party commercial support.

Choice of license doesn't seem to have that much to do with whether something can be monetized. Consider the Linux kernel, which is GPL'ed: prolific contributors profit mostly by being well-employed to continue being prolific contributors, but almost certainly no one is making a dime from commercial Linux kernel usage without source code distribution. There might be some GPL licensed codebases where the copyright owners are making a few bucks from commercial usage by third parties who don't want to distribute their changes, but probably not a lot. There are almost certainly no BSD/MIT licensed codebases where the owners are making any money from commercial usage by third parties -- the license simply allows third parties to use such code outright with absolutely minimal obligations on the third parties.

You can have open source and monetization for some value of "open source", but not one that most people would really consider "open" -- getting to see the source code != open source.

Getting paid to support open source (e.g., add features, fix bugs) can be very difficult when it is easy for anyone to do that. SQLite3 has a mechanism for limiting third party contributions (a proprietary test suite) which limits third-party commercial support though in general that would also increase the risk of forks (but SQLite3 is so widely used that forks are extremely unlikely). The SQLite3 approach won't work generically for very many open source projects as it depends on SQLite3's popularity and very widespread use.

The fact is that for many of us open source is just a way to build and maintain a reputation, and we then monetize the reputation.

I myself have been offered payment for development on open source codebases that I maintain, and I always reject such offers, mostly because accepting them would interfere with my main responsibilities, and in some cases also because it's not my right (e.g., I don't think it would be fair to take money to work on jq without giving @stedolan the right of first refusal). If I were to lose clients/employment, I might reconsider this.