Vertex arrays are indeed the fastest possible way to draw batches of geometry, even dynamic ones. But you have to calculate the vertices positions manually, you can't use the GPU's transformations capabilities. However, using one transform matrix for each quad would be inefficient, so I think that a vertex array is really the best solution for you, especially since you'll use a single texture for all your nodes, and their count is constant.
For the transformations, unless you already have you own class, you can use sf::Transform which is a simple encapsulation of a 3x3 matrix.
To make the higher-level class (the one that users will manipulate and draw) SFML-friendly, you can make it inherit from sf::Drawable (allows it to be drawn with a call to window.draw(entity)), and from sf::Transformable (defines transformation functions to change the position, rotation and scale of the entity).