In order to perform competitively, you need trickier feature engineering. A good place to start is looking at features based on each row, considered separately:

These meta-features (called thus because they are features that are representative of a set of single features) help to distinguish the different kinds of samples found in your data by pointing out specific groups of samples to your algorithm.

Meta-features can also be built based on columns. Aggregation and summarization operations on single features instead have the objective of providing further information about the value of numeric and categorical features; is this characteristic common or rare? This is information that the model cannot grasp because it cannot count categorical instances in a feature.

As meta-features, you can use any kind of column statistic (such as mode, mean, median, sum, standard deviation, min, max, and also skewness and kurtosis for numerical features). For column-wise meta-features, you can proceed in a few different ways:

Example in The Kaggle Book (incl. explanation p.354 of 826) and here.