The KNIME workflow you posted should in general be able to produce the same network as the one in the snippet (except for the model checkpointing, see below) – given that the nodes have properly been configured, of course. The layer nodes allow you to set their activation function, so choosing between ReLU and Softmax activation is possible – if that is what you were referring to by “using them together”.
Whether it is better to use the Keras nodes or DL Python scripting nodes, in your case, probably mostly depends on your personal preference (and potentially the one of others if you plan to collaborate on/share this workflow with other people) – for example if you have a strong (Python) scripting background or rather prefer visual tools.
In general, I personally would advocate using the Keras layer nodes as long as possible since these better match the way KNIME chops processes (workflows) into digestible, self-contained pieces (nodes). Having a lot of logic in a single node (in your case the entire Python script in a singe DL Python node) may make the workflow harder to understand and maintain for you and others, and may generally feel a little “un-KNIMEish”, especially when embedded into a larger overall workflow. That being said, you will always be more flexible when using code over pre-defined nodes. For example the model checkpointing you perform in the last line of your script currently cannot be done via KNIME’s non-scripting Keras nodes. In this particular case, I would probably assemble the model architecture using the Keras layer nodes and perform the training via the DL Python Network Learner node. If you do not need the checkpoint after all, the Keras Network Learner node should probably be the most convenient solution for model training.