The second short exact sequence is wrong. You should recognize this without knowing where the mistake is: $D_{\mathrm{red}}\leq D$, so $\mathscr{O}_X(D_{\mathrm{red}}) \subseteq \mathscr{O}_X(D)$ and so the map you have is surjective if and only if $D_{\mathrm{red}}= D$. In fact that map is always injective as you discovered... The underlying point is that $\mathscr Hom$ is left exact, but not right exact.
The right computation would be that the dual of $$0 \to \mathscr{O}_X(-D) \to \mathscr{O}_X(-D_{red})\to \mathscr F \to 0.$$ gives $$0 \to \mathscr Hom_X(\mathscr F, \mathscr O_X) \to \mathscr{O}_X(D) \to \mathscr{O}_X(D_{\mathrm{red}}) \to \mathscr Ext^1_X(\mathscr F, \mathscr O_X)\to \mathscr Ext^1_X(\mathscr O_X(-D), \mathscr O_X).$$$$0 \to \mathscr Hom_X(\mathscr F, \mathscr O_X) \to \mathscr{O}_X(D_{\mathrm{red}}) \to \mathscr{O}_X(D) \to \mathscr Ext^1_X(\mathscr F, \mathscr O_X)\to \mathscr Ext^1_X(\mathscr O_X(-D_{\mathrm{red}}), \mathscr O_X).$$
Now $\mathscr F$ is supported on $D$, so since $\mathscr O_X$ is torsion free $\mathscr Hom_X(\mathscr F, \mathscr O_X)=0$ and $\mathscr O_X(-D)$$\mathscr O_X(-D_{\mathrm{red}})$ is locally free, so $\mathscr Ext^1_X(\mathscr O_X(-D), \mathscr O_X)=0$$\mathscr Ext^1_X(\mathscr O_X(-D_{\mathrm{red}}), \mathscr O_X)=0$ and hence you have a short exact sequence: $$0 \to \mathscr{O}_X(D_{\mathrm{red}}) \to \mathscr{O}_X(D) \to \mathscr Ext^1_X(\mathscr F, \mathscr O_X)\to 0.$$