In some scientific environments, you often cannot go without FORTRAN as most of the developers only know that idiom, and there is lot of legacy code and related experience.
Over the last few years a coworker and I have developed a rather large computational library from scratch in modern Fortran with many of the features you mention - object orientation, modular/reusable, consistent code style, and more (we haven't done a great job with unit tests, though - need to get on that), and then wrap all of that to provide interfaces with C++, Python, and more. Others here have pointed to all of the books and links I would recommend (and more), so I won't repeat them. My reason for posting is just to say that it really is possible to do these things with Fortran and create something great, so stick with it.
I'll also point out how lucky you are to be starting after so much of the Fortran 2003 standard has been implemented in all major compilers. You'll find a lot of these features (procedure pointers for instance) to be very helpful.