Yeah the ROS node architecture sucks. However, one reason for that design was so that you can run ROS on distributed systems where things communicate to each other over the network.
Actually another reason people use the architecture is for process level isolation, i.e. limiting the blast radius of memory corruption. But in both cases, Im sure you could design an ergonomic RPC framework that takes care of offloading computation mostly transparently behind the scenes :)