Personally, I think you might consider restructuring your data to better express the overlapping group structure to gender and age. For instance, maintaining the MECE (mutually exclusive, completely exhaustive) nature of that set of groups that are consistent or have a single gender and age assignment would be a start. Then, creating separate rows to decompose the overlapping age and gender categories to get them down to MECE rows would be the next goal. The challenge with this approach, of course, is that you may not have enough information to make such a decomposition even possible. I would have to see a sample of raw observations from your data to be able to say anything definite about this.
Is it possible that your data contains percentages for the proportion of the group that falls into each bucket and that you have, secondarily, reduced that down to 0s and 1s? If so, then I wouldn't use categorical coding as you've outlined. Rather, I would consider using the percentages as main effects and taking a few polynomials to fit your model(s).
If your original data is, in fact, in the form 0s and 1s, the approach you are suggesting amounts to dummy variable coding. I would argue that a better method might be to use effect coding. The advantages of effect coding are that the resulting matrix is orthogonal and you don't "lose" a row or level of the factor to estimating the model intercept (assuming the model has an intercept), i.e., you don't have to restrict one level to be all zero's. Here's an article on effect coding that shows how to do it for a 4-level categorical variable. That you have 3 possible levels for gender suggests using -1, 0 and 1 to capture all of the possible, orthogonal combinations:
If age, too, is all 0s and 1s that is crazy and you might consider taking all of the possible combinations of age across the 5 buckets (and, come on, age doesn't range up to "Inf"), and treating the resulting cross-classified "string" as a new, qualitative factor as in an ANOVA. But this could be wasteful in terms of degrees of freedom if you don't have that many data points.
At the end of the day, the original information could not have been grouped like this. In other words, the data you are working with represents a second level of aggregation from the raw, raw data. Frankly, this is a really crappy way to have this information coded up and whoever did it should be fired.