The relevant orthographic rules are §§ 71 to 74.
§ 71: Gleichrangige (nebengeordnete) Teilsätze, Wortgruppen oder Wörter
grenzt man mit Komma voneinander ab.
§ 72: Sind die gleichrangigen Teilsätze, Wortgruppen oder Wörter durch
und, oder, beziehungsweise/bzw., sowie (= und), wie (= und), entweder
… oder, nicht … noch, sowohl … als (auch), sowohl … wie
(auch) oder durch weder … noch verbunden, so setzt man kein
Komma.
§ 73: Bei der Reihung von selbständigen Sätzen, die durch und, oder, beziehungsweise/
bzw., entweder – oder, nicht – noch oder durch weder
– noch verbunden sind, kann man ein Komma setzen, um die Gliederung
des Ganzsatzes deutlich zu machen.
§ 74: Nebensätze grenzt man mit Komma ab; sind sie eingeschoben, so
schließt man sie mit paarigem Komma ein.
Since you dug your nose into German literature such as Kafka and frequently ask about German translations of other works, I assume that you can understand the rules as presented.
For starters, § 71 says that all coordinating conjunctions require a comma and § 72 lists an exhaustive list of those where a comma is not permitted. Finally, § 73 lists another exhaustive list of those where you may place a comma to clarify the clauses. Denn is not part of the list, so a comma before denn is mandatory.
Hänsel ist arm, denn Gretel ist reich.
§ 74 requires you to put commas around general subordinate clauses such as those that originate from indirect speech. But you got that part right.
Combining both fragments into indirect speech using dass, we have two new coordinated subordinate clauses, so in sentence level terms, you would have the new main clause (0) and two subordinate ones, both level 1. This means that you must use a comma before the entire subordinate clause lump. Not using dass would mean that we continue to have main clauses, which are added together. § 71 still requires a comma for those.
Because denn always requires a comma, there is no debate as to the following sentences being the only correctly punctuated ones:
Sie sagen, Hänsel sei arm, denn Gretel sei reich.
Sie sagen, dass Hänsel arm sei, denn Gretel sei reich.
Sie sagen, dass Hänsel arm sei, weil Gretel reich sei.
(As chirlu pointed out in the comments, the main clause word order denn induces means that it cannot lead a subordinate clause. Rather, a clause following denn must be a main clause.)
Finally, we have the versions with und. § 74 requires commas at the beginning of the subordinate clauses. Because the two following subordinate clauses are of the same level and connected by und, §§ 72 and 73 make the comma optional. When using the main clause construction, § 71 requires a comma after the first main clause. § 72 forbids the comma between Hänsel’s and Gretel’s sentence and § 73 does not reallow it. Correct versions are thus:
Sie sagen, Hänsel sei reich und Gretel sei arm.
Sie sagen, Hänsel sei reich, und Gretel sei arm.
Sie sagen, dass Hänsel reich sei und Gretel arm sei.
It is not required to repeat the dass like you suggested in the question, but possible when using und.
Sie sagen, dass Hänsel reich sei und dass Gretel arm sei.
The modus of the verb does not change the answer.