Each training run for DDQN agent takes 2 days, and still ends up with -13 avg score, but OpenAi baseline DQN needs only an hour to converge to +18?
Dueling architectures create bigger differences in the values of actions in the state space. This is because the state-value V(s) function is estimated separately from the state-action value Q(s, a). A new quantity, the advantage of an action, can then be defined as A(s, a) = Q(s, a) - V(s). 


  The Q function, however, measures the the value
  of choosing a particular action when in this state. The advantage
  function subtracts the value of the state from the Q
  function to obtain a relative measure of the importance of
  each action.
  
  Dueling Network Architectures for Deep Reinforcement Learning




To better direct you, here are 2 resources that could really help you understand why those differences are important.

Speeding up DQN on PyTorch: how to solve Pong in 30 minutes

The main points of the blog are:


Use a larger batch size and play several steps before updating
Play and train in a separate process
Use asyncronous cuda transfers


RL Adventure

This github library has easy to follow jupyter notebooks and links to all of the papers.
It includes:


DQN
Double DQN
Dueling DQN
Prioritized Experience Replay
Noise Networks for Exploration
Distributional RL
Rainbow (That network that deepmind made that had so many things in it they couldn't find a good name)
Distributional RL with Quantile Regression
Hierarchical Deep RL