D/L or any other method is necessarily an approximation, so there will always be some strange edge cases. But it's arguably better than not having any result at all.
Regarding your concerns of correctness. The D/L method is based on statistics from previous games, so it does generally take into account that teams have aggressive players in the lower middle order etc. Also, if there is an interruption during the first innings, the team batting second will normally get a higher target, exactly because of your concern: The team batting first did not know it was going to rain and was playing conservatively, but the team batting second does and can plan accordingly. That is pretty much the whole point of using the D/L method over more simplistic methods such as run-rate calculations.
There are alternative methods. The D/L method is currently used for all ICC limited overs matches and most high-profile national competitions. The VJD system is an alternative system that is claimed to be better but has currently not found any high-profile uptake. In amateur leagues you will probably find some kind of run-rate calculation in use, which is well-known to be flawed, but simpler to apply in such competitions. It depends on what the respective governing body decides.