My DD also is a cat napper. The daycare she goes to says this is not uncommon for younger babies (DD is also 4.5 months). She generally sleeps 30 minutes at a time during the day, and rarely longer. She takes 4-5 naps a day. The only time she'll sleep longer is in the sling or her last nap of the day.
To get DD down, I watch her signs carefully (rubbing eyes, yawning, arching back), and then get her to her room, darken, rock her (usually swaddled) to a lullaby, and then lay her down drowsy. She almost always falls to sleep immediately. I think watching the signs is key. DD needs to nap every 1 to 2 hours because she takes such short naps. I wonder if your DS would go to sleep more easily if he could take more frequent naps and avoid possibily getting overtired?
Also, my daycare said sometimes you can get a baby to take a longer nap by catching them just as they are waking up and then doing your nap routine again to get them back down. I haven't tried that yet, but it sounds intriguing.
I'll be so glad when DD naps longer! I know she needs to so she can ensure getting enough naptime in the day. I feel your pain.
ETA: I think some babies are just naturally like this and will eventually settle into a longer nap schedule on their own. I'm hoping, anyway.